极光推送总结
官网:https://docs.jiguang.cn/jpush/client/Android/android_sdk/
1.注册帐号,创建应用包名
注意点:
- 这里保持和我的项目的包名一致,好辨认;
- 设置应用头像,如果发现发现收到的消息不是你设定的头像,而是极光默认头像,重启手机即可;
- 保存或者知道怎么查找生成的APPkey值,很重要。
2.先运行一遍demo。
看通知,自定义消息,以及富媒体都是怎样的形式展示的,这样在之后写demo,心里有底,小女子就是找的网上好看的自定义消息的demo去运行,结果各种问题,还一直沉迷在bug里没出来,浪费时间
3.运行报错问题:
极光正在解决中,但不影响使用,不要一直卡在这不动
at cn.jiguang.d.b.a.d.f(Unknown Source)
4.添加的打印信息,在控制台没有任何输出的问题,确认如下这几个地方。
- 确认打印信息的地方,一定可以跑到(小女子就会忘记AndroidManifist里没注册广播,So……你懂)
- 确认手机的开发者模式打开,并且下面的调试的应用也打开
- 打开你手机的工程模式,设置调试模式。(没打开之前,发现我的手机只能用Log.e的方式输出,.d的都不行)。
- 确认Android studio里的调试工具已经切换过来,准备打印
5.PC服务器端发送带Key的消息,在项目的广播接收的地方,要用json解析出来
之前没有解析,整个bundle都放进去,然后跳转Activity,发现那边接收到的值为空
intent.putExtras(bundle);
正确的打开方式应该是这样:
if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); String sale_country = ""; String snm = ""; String uid = ""; try { JSONObject extrasJson = new JSONObject(extras); sale_country = extrasJson.optString("sale_country"); snm = extrasJson.optString("snm"); uid = extrasJson.optString("uid"); } catch (Exception e) { LogUtil.e(TAG, "Unexpected: extras is not a valid json"); return; } LogUtil.d(TAG, "[MyReceiver] 用户点击打开了通知"); //打开自定义的Activity Intent i = new Intent(context, ProductDetailActivity.class); i.putExtra("sale_country",sale_country); i.putExtra("snm",snm); i.putExtra("uid",uid); // i.putExtras(bundle); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP ); context.startActivity(i); }
测试:
- 目前我使用的Charles,抓包工具,可以查看你发送过来的值,是不是接收到了,使用第一种整个bundle传到Activity的方式,snm收到的值为null,使用第二种,就有值了
- 使用Android Stuido设置断点的方式,在Activity接收的地方打断点
6.官网提供了两种集成极光SDK的模式。
- 一种是手动集成(就是说一个个把AndroidManifist ,so 之类的东西手动配置)
- 另一种是jcenter自动集成。粗心或想偷懒的,就它了。
说下jcenter自动方式,在AndroidManifist里,只需要下图这两个东西。其他的,需要的时候再加,这是最简洁的,不像手动添加的那种方式,要添加各种类和权限。
当然,自动集成的方式也有几个地方要配置哦,一个都不能少,
总之,照着官网来,不懂的还可以call极光客服(这点极光做的非常好,回应很及时啊,有木有!附上客服QQ:179576370)
自动配置AndroidManifist不会生成AppKey的说明链接
总结完毕!(2)