集成 jpush-react-native 常见问题汇总 (iOS 篇)

给 iOS 应用添加推送功能是一件比较麻烦的事情,本篇文章收集了集成 jpush-react-native 的常见问题,目的是为了帮助用户更好地排查问题node

1. 收不到推送

  • 确保是在真机上测试,而不是在模拟器
  • 本身的应用已经在 Apple developer 给应用配置推送功能,建立推送证书 (而且保证 bundle id 与 Apple developer 上的是一致的)若是以前没有接触过推送证书建议看视频来 官方集成视频
  • 可以获取 deviceToken 可是收不到推送, 若是是使用 xcode 8,检查 (Project -> Target -> Capabilities ) Push Notification 选项是否已经点开,若是没有须要点开

2. 收到一条通知 JS 层会有多个 ReceiveNotification 事件

  • 升级 jpush-react-native 到最新版本
  • 有没有在合适的地方 remove ReceiveNotification 事件,若是屡次监听该事件会致使重复接收

3. 如何消除 应用 icon 的角标(badge)

调用 JPushModule.setBadge 方法 若是设为 0,则表示状况角标react

JPushModule.setBadge(5, (badgeNumber) => {
  console.log(badgeNumber)
});

4. 开发环境可以收到推送,生产环境收不到推送

  • 若是是经过控制台发送的推送,检查环境选择是否正确
  • 若是是调用 REST api 发送通知,请检查推送参数
  • 手机应用是不是仍然是 开发环境, 若是不是请打包 Ad Hoc 来测试

5. 自定义消息事件没法触发

  • 若是经过控制台发送的自定义消息,确保选择的是自定义消息,而不是通知
  • 检查是否监听了 networkDidReceiveMessage 事件

6. 点击推送唤起应用的时候 OpenNotification 不调用

  • 升级 jpush-react-native 到最新版本(旧版本还没作缓存处理,新版本已修复)
  • 检查监听 OpenNotification 的操做是否异步调用,有用户应为在异步回调中才执行监听操做,致使事件已经上抛到 js 层但 js 层还没执行监听操做的问题

7. 通知在前台展现问题

  • iOS 10 开始容许通知在前台展现这个地方在 Native 代码中控制
// iOS 10 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
  // Required
  NSDictionary * userInfo = notification.request.content.userInfo;
  if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
    [JPUSHService handleRemoteNotification:userInfo];
    [[NSNotificationCenter defaultCenter] postNotificationName:kJPFDidReceiveRemoteNotification object:userInfo];
  }
completionHandler(UNNotificationPresentationOptionAlert);  // 须要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型能够选择设置
}
  • iOS 10 以前是系统控制,应用在前台推送不展现

8. 找不到头文件 RCTJPushModule.h

  • 在 iOS 工程中若是找不到头文件可能要在 TARGETS-> BUILD SETTINGS -> Search Paths -> Header Search Paths 添加以下如路径
$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/RCTJPushModule

RN 在 0.40.0 以后 不会自动加入这个路径了,要手动加一下ios

9. 在 iphone 5 的模拟器编译不经过

JPush SDK 在 3.0.0 及之后版本再也不支持 i386 的模拟器了血药在 iphone 5s 以上版本中测试react-native

10. 找不到 jcore-react-native

  • 在 jpush-react-native 1.4.4 之后版本 须要通知安装 jcore-react-native 才能正常使用

做者:HuminiOS - 极光
原文:集成 jpush-react-native 常见问题汇总 (iOS 篇)
知乎专栏:极光日报api

相关文章
相关标签/搜索