您的位置:首页 > 其它

极光推送配置TagAndAlias,实现个推效果

2018-02-07 14:26 155 查看
在推送集成以后,和服务端约定好与用户相关的唯一标识,每次在打开应用时发送给服务端。

我是写在用户登陆以后。

/**
* 设置标签与别名
*/
private void initJPush() {
/**
*这里设置了别名,在这里获取的用户登录的信息
*并且此时已经获取了用户的userId,然后就可以用用户的userId来设置别名了
**/
Set<String> tags = new HashSet<String>();
//这里可以设置你要推送的人,一般是用户uid 不为空在设置进去 可同时添加多个
if (!TextUtils.isEmpty(SharePref.getUserId(null))) {
tags.add(SharePref.getUserId(null));//设置tag
}
// if (!TextUtils.isEmpty(SharePref.getUserId(null))){
// tags.add("tag1000");//设置tag
// }
//上下文、别名【Sting行】、标签【Set型】、回调
JPushInterface.setAliasAndTags(this, SharePref.getUserId(null), tags,
new TagAliasCallback() {
@Override
public void gotResult(int code, String alias, Set<String> set) {
switch (code) {
case 0:
//这里可以往 SharePreference 里写一个成功设置的状态。成功设置一次后,以后不必再次设置了。
//UserUtils.saveTagAlias(getHoldingActivity(), true);
LogUtils.e("Set tag and alias success极光推送别名设置成功");
break;
case 6002:
//极低的可能设置失败 我设置过几百回 出现3次失败 不放心的话可以失败后继续调用上面那个方面 重连3次即可 记得return 不要进入死循环了...
LogUtils.e("Failed to set alias and tags due to timeout. Try again after 60s.极光推送别名设置失败,60秒后重试");
break;
default:
LogUtils.e("极光推送设置失败,Failed with errorCode = " + code);
break;
}
}
});
}
唯一标识上传完,接下来就是监听后台发送的通知,前端做及时处理,极光是安卓原声的广播接收:
在Manifest文件里位置广播:
<!-- User defined. 用户自定义的广播接收器 注册广播 -->
<receiver
android:name=".reveiver.JPushReceiver"
android:enabled="true"
android:exported="false"
android:permission="1000">
<intent-filter>

<!-- Required 用户注册SDK的intent -->
<action android:name="cn.jpush.android.intent.REGISTRATION" />
<!-- Required 用户接收SDK消息的intent -->
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
<!-- Required 用户接收SDK通知栏信息的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
<!-- Required 用户打开自定义通知栏的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
<!-- 接收网络变化 连接/断开 since 1.6.3 -->
<action android:name="cn.jpush.android.intent.CONNECTION" />
<action android:name="cn.jpush.android.intent.NOTIFICATION_CLICK_ACTION" />
<action android:name="cn.jpush.android.intent.UNREGISTRATION" />

<category android:name="cn.nanmi.yibidding" />
</intent-filter>
</receiver>
最后就是对自定义广播消息进行处理:

public class JPushReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
/**
* 用户注册SDK的intent
*/
LogUtils.e("onReceive1: ");
} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
/**
* 用户接受SDK消息的intent
*/
LogUtils.e("收到了自定义消息消息是2");

} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
/**
* 用户接收SDK通知栏信息的intent
*/
LogUtils.e("收到了自定义消息消息是3");
//保存服务器推送下来的消息的标题。
String extra1 = bundle.getString(JPushInterface.EXTRA_TITLE);
LogUtils.e("消息的标题是extra1:" + extra1);
//消息内容
String extra2 = bundle.getString(JPushInterface.EXTRA_MESSAGE);
LogUtils.e("消息内容是extra2:" + extra2);
//附加字段。这是个 JSON 字符串。
String extra3 = bundle.getString(JPushInterface.EXTRA_EXTRA);
LogUtils.e("附加字段。这是个 JSON 字符串是extra3:" + extra3);
//唯一标识消息的 ID, 可用于上报统计等。
String extra4 = bundle.getString(JPushInterface.EXTRA_MSG_ID);
LogUtils.e("唯一标识消息的 ID是extra4:" + extra4);
//通知的标题
String extra5 = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);
LogUtils.e("通知的标题extra5:" + extra5);
//通知内容
String extra6 = bundle.getString(JPushInterface.EXTRA_ALERT);
LogUtils.e("通知内容extra6:" + extra6);
//通知栏的Notification ID,
//如果服务端内容(alert)字段为空,则notification id 为0
String extra7 = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_ID);
LogUtils.e("通知栏的Notification ID+extra7:" + extra7);
//通知推送下载的HTML的文件路径,用于展现WebView
String extra8 = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_PATH);
LogUtils.e("通知推送下载的HTML的文件路径,用于展现WebView+extra8:" + extra8);
//通知推送下载的图片资源的文件名,多个文件名用 “,” 分开。
// 与 “JPushInterface.EXTRA_RICHPUSH_HTML_PATH” 位于同一个路径。
String extra9 = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_RES);
LogUtils.e("通知推送下载的图片资源的文件名,多个文件名用+extra9:" + extra9);
//JSON
String extra10 = bundle.getString(JPushInterface.EXTRA_EXTRA);
LogUtils.e("JSON+extra10:" + extra10);
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
/**
* 用户打开自定义通知栏的intent 此处处理跳转事件
*/
String extra3 = bundle.getString(JPushInterface.EXTRA_EXTRA);
JPushBean jPushBean = JSON.parseObject(extra3, JPushBean.class);
if (jPushBean.getSubType().equals("deliveryPush") && jPushBean.getType().equals("user")) {
String extra6 = bundle.getString(JPushInterface.EXTRA_ALERT);
LogUtils.e("跳转公告详情url" + jPushBean.getUrl());
//跳转公告详情
String url =  jPushBean.getUrl();
Intent intent1 = new Intent(context, WebViewActivity.class);
intent1.putExtra("title", context.getResources().getString(R.string.title_notice_detail));
intent1.putExtra("url", url);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
} else {
LogUtils.e("Unhandled intent - " + intent.getAction());
LogUtils.e("收到了自定义消息消息extra是5:");
}
}
参考链接地址:极光推送官网文档集成,以及http://blog.csdn.net/qq_34536167/article/details/76694830



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: