极光推送配置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;
}
}
});
}
我是写在用户登陆以后。
/**
* 设置标签与别名
*/
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
相关文章推荐
- 极光推送的从0到1的配置
- 使用jQuery实现tag便签去重效果
- Android开发中,极光推送,从账号注册到推送,一步一步实现过程
- C#简单的JPush(极光推送) API实现推送功能
- HTML+CSS实现图片下半部分遮罩文字效果(仿微信推送信息的图片文字效果)
- 极光推送 tag alias 设置
- 极光推送配置不成功的原因
- 使用极光推送实现分组发送和服务端集成
- atitit.极光消息推送服务器端开发实现推送 jpush v3. 总结o7p
- android中通过自定义xml实现shape效果 的属性配置
- 教你实现简单的极光推送-Eclipse
- 极光推送服务端实现
- 配置iOS推送通知与推送通知iOS客户端编写实现及推送服务器端编写
- 极光推送的代码实现
- 极光推送实现分组发送和服务端集成
- atitit.极光消息推送服务器端开发实现推送 jpush v3. 总结o7p
- 极光消息推送服务器端开发实现推送(下)
- h5-35-ajax轮询实现推送效果
- 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
- 使用Jpush(极光推送)实现推送功能