iOS 系统push和极光push并存的问题

使用极光推送的注册方法registerForRemoteNotificationConfig注册通知 - 前台push

1、iOS 10之前系统的手机则只执行系统方法:
      - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo。
2、iOS 10以后系统的手机

1)在使用Xcode跑代码会执行一次极光推送代理方法

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler。

和系统代理方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

2)打包则只执行

//MARK: iOS10新增:处理前台收到通知的代理方法  在程序内
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler。

后台同理。

传递参数

lALOjZsXM80C2M0E_g_1278_728.png_620x10000q90g.jpg

通知内容类似如下:

{
  "_j_msgid" = 200806057;  // 第三方附带的 id,用于统计点击
  aps =     {
    alert = "显示内容";
    badge = 1;  // App 角标,可推送 n、+n、-n 来实现角标的固定、增加、减少
    sound = default;  // 推送声音,默认系统三全音,如需使用自己的声音,需要将声音文件拖拽&拷贝至 Xcode 工程目录任意位置,并在推送时指定其文件名
  };
  key1 = value1;  // 自定义字段,可设置多组,用于处理内部逻辑
  key2 = value2;
}

1、前台:

收到push会立即走didReceiveRemoteNotification方法(做处理)

2、后台

开启后台模式 - Remote Notification 收到push调用回调didReceiveRemoteNotification:fetchCompletionHandler:方法

3、杀死

正常消息

各种显示效果跟普通推送完全一样。
必须携带 "content-available" = 1;
必须携带 alert、badge、sound 中 至少 1 个字段。

静默消息

必须携带 "content-available" = 1;,因此静默必然是后台的。
必须不携带 alert、badge、sound。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容