Android 极光推送的集成
来源:互联网 发布:迅捷路由器软件下载 编辑:程序博客网 时间:2024/05/19 22:58
最近公司让集成极光推送,实现个人推送还有所有下载app 的推送。去极光官网看了下资料,发现极光更新了,从sdk.3.0.7 开始用新的设置别名和Tag的方法,以前的方法不再维护了。。。那肯定得研究新的方法,下面是我的一些心得体会,和大家分享下。
一、极光推送集成:
集成的过程官网写的很清晰,我就不在重复了,需要的可以访问极光推送官网:https://docs.jiguang.cn/jpush/client/Android/android_guide/
二、推送到所有App 用户:
使用JPushId 是最简单的方法:在你的代码中添加这句代码就可以了
String jPushId = JPushInterface.getRegistrationID(this);
三、推送到个人或者特定群体:
我个人主要用的方法就是setAlias() 这个方法
1、以前旧的方法,直接回调就可以设置别名成功,代码很简单:(可以参考JPush 官网中的代码)
// 这是来自 JPush Example 的设置别名的 Activity 里的代码。一般 App 的设置的调用入口,在任何方便的地方调用都可以。private void setAlias() { EditText aliasEdit = (EditText) findViewById(R.id.et_alias); String alias = aliasEdit.getText().toString().trim(); if (TextUtils.isEmpty(alias)) { Toast.makeText(PushSetActivity.this,R.string.error_alias_empty, Toast.LENGTH_SHORT).show(); return; } if (!ExampleUtil.isValidTagAndAlias(alias)) { Toast.makeText(PushSetActivity.this,R.string.error_tag_gs_empty, Toast.LENGTH_SHORT).show(); return; } // 调用 Handler 来异步设置别名 mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias));}private final TagAliasCallback mAliasCallback = new TagAliasCallback() { @Override public void gotResult(int code, String alias, Set<String> tags) { String logs ; switch (code) { case 0: logs = "Set tag and alias success"; Log.i(TAG, logs); // 建议这里往 SharePreference 里写一个成功设置的状态。成功设置一次后,以后不必再次设置了。 break; case 6002: logs = "Failed to set alias and tags due to timeout. Try again after 60s."; Log.i(TAG, logs); // 延迟 60 秒来调用 Handler 设置别名 mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), 1000 * 60); break; default: logs = "Failed with errorCode = " + code; Log.e(TAG, logs); } ExampleUtil.showToast(logs, getApplicationContext()); }};private static final int MSG_SET_ALIAS = 1001;private final Handler mHandler = new Handler() {@Override public void handleMessage(android.os.Message msg) { super.handleMessage(msg); switch (msg.what) { case MSG_SET_ALIAS: Log.d(TAG, "Set alias in handler."); // 调用 JPush 接口来设置别名。 JPushInterface.setAliasAndTags(getApplicationContext(), (String) msg.obj, null, mAliasCallback); break; default: Log.i(TAG, "Unhandled msg - " + msg.what); } } };
2、sdk 3.0.7 开始使用新的设置别名的方法
新的设置别名的方法不能直接回调获得设置结果,是通过JPushMessageReceiver 这个广播来响应设置别名的结果,这算是其最大的改变点。参考demo 我用新方法做了推送的别名设置。
1)设置别名
JPushInterface.setAlias(GlobalApplication.getContext(), KeyConfig.ALISE, (String) msg.obj); // 第二个参数sequenc ,自己自定义的序列号; 第三个参数alias
2)设置别名后在广播中做别名的响应操作
public class JpushReciver extends JPushMessageReceiver { //设置别名反馈 @Override public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) { TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context, jPushMessage); // 这个方法就是我们设置别名后结果,根据JPushMessage 做处理 super.onAliasOperatorResult(context, jPushMessage); }}
// 通过JPushMessage 来获取ErrorCode ,来做设置别名成功还是失败的操作
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) { String alias = jPushMessage.getAlias(); if (jPushMessage.getErrorCode() == 0) { GlobalApplication.spUtils.put(KeyConfig.ALIAS, alias); } else { String logs = "Failed to set alias and tags due to timeout. Try again after 60s.极光推送别名设置失败,60秒后重试"; LogUtils.e(logs); // 延迟 60 秒来调用 Handler 设置别名 mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), 1000 * 60); } }
四、附完整的TagAliasOperatorHelper 代码
public class TagAliasOperatorHelper { private static final int MSG_SET_ALIAS = 1; private static TagAliasOperatorHelper mInstance; public Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case MSG_SET_ALIAS: LogUtils.e("Set alias in handler."); //调用JPush 新接口来设置别名 JPushInterface.setAlias(GlobalApplication.getContext(), KeyConfig.ALISE, (String) msg.obj); break; default: LogUtils.e("Unhandled msg - " + msg.what); } } }; public static TagAliasOperatorHelper getInstance() { if (mInstance == null) { synchronized (TagAliasOperatorHelper.class) { if (mInstance == null) { mInstance = new TagAliasOperatorHelper(); } } } return mInstance; } public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) { String alias = jPushMessage.getAlias(); if (jPushMessage.getErrorCode() == 0) { GlobalApplication.spUtils.put(KeyConfig.ALIAS, alias); } else { String logs = "Failed to set alias and tags due to timeout. Try again after 60s.极光推送别名设置失败,60秒后重试"; LogUtils.e(logs); // 延迟 60 秒来调用 Handler 设置别名 mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), 1000 * 60); } }}
五、Tags 的设置新方法与Alias 类似
设置结果调用广播中onTagOperatorResult()方法。// 具体的操作我没有怎么实现,不过原理都是一样的。
@Override public void onTagOperatorResult(Context context,JPushMessage jPushMessage) { //操作设置Tag后的响应 super.onTagOperatorResult(context, jPushMessage); }
阅读全文
0 0
- Android 极光推送的集成
- Android 极光推送集成
- android极光推送集成
- Android集成极光推送
- android集成极光推送
- Android集成极光推送
- android 集成极光推送
- android studio极光推送的集成
- Android 集成极光推送的第三方
- Android集成极光推送 的异常
- Android JPush的集成 极光推送
- 极光推送的集成
- 极光推送的集成
- 极光推送的集成
- 极光推送的集成
- android studio集成极光推送
- Android Studio 集成极光推送
- Android Studio集成极光推送
- java 1.7于1.8hashMap.put的区别
- E: 笨小猴
- 自定义版本比较函数
- 最小生成树
- Android7.0 Launcher3 无法导入SystemProperties
- Android 极光推送的集成
- 在R或Rstudio中调用SparkR
- :Error Domain=ShareSDKErrorDomain Code=207 "(null)" UserInfo={error_message=Can't share because plat
- django整合原有的mysql数据库
- 20个非常有用的Java程序片段
- 随时随地退出所有活动
- hdu6181Two Paths-(次短路)
- 使用Conda来管理Python包
- 安卓自定义下拉框---Spinner的实现