1.支持第三方推送内容,是要客户端和服务器都支持的,客户端和服务器都导入推送SDK。
2.服务器推送内容,可以精确指定推送时间,推送的具体接收人,用户群,位置。
3.即推送的维度可以使时间,位置,人群
4.
极光使用了两种不同的通知方式,一种是推送通知,一种是推送消息。
1.推送通知,此时发送的内容只是一条简单的文本消息。
点击消息后,会跳转到一个Activity(此Activity需要在清单文件中注册过滤器
<activity android:name="com.example.jpushdemo.TestActivity" >
<intent-filter>
<action android:name="jpush.testAction" />
<category android:name="jpush.testCategory" />
</intent-filter>
</activity>
)中,可以在此Activity中以获取传递Intent的方式获取到message的对象。并将其显示在Activity中。
6.
Log.i(TAG, bundle.getString(JPushInterface.EXTRA_ALERT));//此处获取到的文本就是通知的内容
一般来说如果不需要太多复杂内容的话,可以直接使用此种方式,将数据封装成一个Json,将其推送,客户端收到后将json解析出来并展现到前台即可。
此种方式有缺陷 ,极光中对推送通知中文本的大小有限制,为72个汉字(或144个其它类型字符)。传输信息有限。
2.推送消息,根据Demo可以看到,自定义消息接收需要客户端接收一个消息广播接收者。
在MyReceiver中有提示
/**
* 自定义接收器
* 如果不定义这个 Receiver,则:
* 1) 默认用户会打开主界面
* 2) 接收不到自定义消息
*/
public class MyReceiver extends BroadcastReceiver消息只能在此Receiver中获取,不会显示成通知,或者其他。在onReceive(Context context, Intent intent)中获取方式为
if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
Bundle bundle = intent.getExtras();
Log.d(TAG, "[MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));
Log.d(TAG, "[MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));
}
在此处也可获取推送通知中的内容
else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
Log.d(TAG, "[MyReceiver] 接收到推送下来的通知");
int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
Log.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);
此种方式明显比推送通知的方式好一点的是其发送的信息容量比较大,为236个汉字。