【android】第三方集成之——极光推送

来源:互联网 发布:开源大数据可视化工具 编辑:程序博客网 时间:2024/06/06 04:04

最近做项目多次用到极光推送的集成。在次总结一下集成时的注意事项。

1:主要流程就是按照人家的文档,一步步去添加。但是在做到这一步时就要注意了
这里写图片描述
红色标注的部分,这个“相关配置”怎么理解呢,是清单文件中,不添加任何参数吗,我尝试了一下,推送是可以成功的。但是,我在测试通知广播时,并不能收到广播,当我在 AndroidManifest.xml 文件中添加了如下代码,才能在定义的 Receiver 中收到广播。

<!-- User defined. 用户自定义的广播接收器-->         <receiver             android:name="您自己定义的Receiver"             android:enabled="true">             <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" />                 <category android:name="您应用的包名" />             </intent-filter>         </receiver>

这说明也并不是任何代码都不用添加了,也并不是人家官方都默认添加好了,在AndroidManifest.xml 文件中。所以觉得还是都在清单文件中,再都添加一边,最好!

总结一下,在集成时,主要关注的几个api的运用。
1:停止与恢复推送服务 API

JPushInterface.stopPush(getApplicationContext());//极光推送服务会被停止掉JPushInterface.resumePush(getApplicationContext());//极光推送服务会恢复正常工作

2 : 接收推送消息Receiver

3: 别名与标签 API(感觉这个用法比较重要)

设置别名的功能:能实现指定目标(例如指定用户)的消息推送。
设置便签的功能:能实现指定群体(例如老年人)的消息推送。

关键代码:详细用法,官方文档都有详细介绍。

 private final Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            switch (msg.what) {                case MSG_SET_ALIAS:                    JPushInterface.setAliasAndTags(getApplicationContext(), String.valueOf(msg.obj), null, new TagAliasCallback() {                        @Override                        public void gotResult(int i, String alias, Set<String> tags) {                            String logs;                            switch (i) {                                case 0:                                    logs = "Set tag and alias success";                                    Log.i(TAG, logs);                                    ExampleUtil.saveAlias(alias, getApplicationContext());                                    break;                                case 6002:                                    logs = "Failed to set alias and tags due to timeout. Try again after 60s.";                                    Log.i(TAG, logs);                                    if (ExampleUtil.isConnected(getApplicationContext())) {                                        mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), 1000 * 60);                                    } else {                                        Log.i(TAG, "No network");                                    }                                    break;                                default:                                    logs = "Failed with errorCode = " + i;                                    Log.e(TAG, logs);                            }                        }                    });                    break;                case MSG_SET_TAGS:                    JPushInterface.setAliasAndTags(getApplicationContext(), null, (Set<String>) msg.obj, new TagAliasCallback() {                        @Override                        public void gotResult(int i, String alias, Set<String> tags) {                            String logs;                            switch (i) {                                case 0:                                    logs = "Set tag and alias success";                                    Log.i(TAG, logs);                                    ExampleUtil.saveTags(String.valueOf(tags), getApplicationContext());                                    break;                                case 6002:                                    logs = "Failed to set alias and tags due to timeout. Try again after 60s.";                                    Log.i(TAG, logs);                                    if (ExampleUtil.isConnected(getApplicationContext())) {                                        mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, tags), 1000 * 60);                                    } else {                                        Log.i(TAG, "No network");                                    }                                    break;                                default:                                    logs = "Failed with errorCode = " + i;                                    Log.e(TAG, logs);                            }                        }                    });                    break;                default:                    break;            }        }    };

4: 统计分析 API

5:CrashLog收集并上报

至于其他的用法,如果想实现更全面,更个性化的功能,就在仔细研究一下。

0 0
原创粉丝点击