iOS 日常开发随笔iOS Developer

iOS 极光问题

2017-06-13  本文已影响36人  阿狸先森丶12138

iOS 不点击通知栏,怎么获取消息内容?

Background Remote Notification消息详细解读

如果需要在不点击通知栏的情况下,可以获取到消息内容,可以推送Background Remote Notification117

这类消息的规则是:

客户端需要处于Background 或 Suspended 状态,被杀死后无法调起该方法

如果是推送Silent Remote Notifications消息,不保证成功,在Apple那边有频率控制,具体情况不详。

该类消息被收到后,Background 方法就会被调用,获得信息内容。

点击了展示该消息的通知栏,会再次调用 Background 方法。

点击了图标 这个操作并不会 再次调用 Background 方法。

经官方@aoyy测试结果如下 :

粘贴的图像1066x717 178 KB

间接的方法:

同时推送通知+自定义消息

自定义消息前台接收,不展示

registrationID 详细解读

详细定义点我查看

可辨别 Android&iOS:从左数,第三位代表平台

0 代表 Android

1 代表 iOS

Android 不同的设备却获取到相同的registrationID(同一个设备卸载重装的registrationID是一样的)

设备的 IMEI 、 serial_number 是否相同

如果 serial_number 一样,当取到的mac地址又为空,那就有可能很多设备拿到相同regid值

*

解决办法:

将设备的 IMEI 弄成不一样的,如果你要弄一样的 IMEI ,那就必须要弄不一样的 serial_number

serial_number 是后续SDK版本新增的,使用新增这个判断前的SDK 必须 IMEI 唯一

重烧 IMEI ,刷机或者:

步骤一:把这个文件清掉:Environment.getExternalStorageDirectory().getPath() + "/data/.push_deviceid";

步骤二:同步清除掉setting里面的,方法如下:Settings.System.putString(context.getContentResolver(), “devcie_id_generated”, “”);

步骤三:还有把缓存也清理下。

然后再重装app

iOS 设备的registrationID发生变化,如果不使用idfa

iOS 9 之前一般是不会改变的

iOS 9 之后,由于 Apple 在 App 卸载重装后,会给一个新的 token,所以对应的 registrationID 也会改变。

长时间关闭推送后又打开,也可能导致 token 变化。

在客户端监听广播,或调用接口 获取到 RegistrationID,然后将其保存到己方服务器,以备使用!

「如何顺利的获取 registrationID 」

推送时使用registrationID进行一对一推送

有「消息收不到」疑问时必须提供的信息

服务端调用API 给设备设置别名/标签需要传的值

上一篇 下一篇

猜你喜欢

热点阅读