react-native ios 集成极光推送走过的坑

2018-10-15  本文已影响0人  一只特例独行de猪

集成最新极光推送教程

需要注意的地方

遇到的问题

ios推送deviceToken拿不到,不弹出获取推送权限的提示框

确认极光上的应用设置,开发证书和生产证书都是通过验证的,app developer上应用的push也开绿灯了,xcode输出:

Not get deviceToken yet. Maybe: your certificate not configured APNs

其他问题排除以后,这个问题的原因是未向苹果apns服务器注册设备,
所以可以在AppDelegate.m加入原生代码(这个参考了ios集成极光sdk指南操作的):

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
  NSLog(@"注册远程推送成功——————%@",deviceToken);
  [JPUSHService registerDeviceToken:deviceToken];
}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error{
  NSLog(@"注册远程推送fail%@",error);
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
  entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound;
  if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
    // 可以添加自定义 categories
    // NSSet<UNNotificationCategory *> *categories for iOS10 or later
    // NSSet<UIUserNotificationCategory *> *categories for iOS8 and iOS9
  }
  [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];

  [JPUSHService setupWithOption:launchOptions appKey:@"你的极光appkey"
                        channel:nil apsForProduction:false];
}

另外其实jpush-react-native对ios注册apns服务器这块也做了接口,只是我没注意到,参考github文档api发现:

JPushModule.initPush()

初始化 JPush,这个方法初始化推送功能 iOS 会弹出获取推送权限的提示框(注意这个系统提示框只会触发一次,如果用户首次不同意,之后需要用户到设置中修改推送权限)。

有些我们不懂的地方,我们也可以参考jpush-react-native的example:https://github.com/jpush/jpush-react-native/tree/master/example

上一篇下一篇

猜你喜欢

热点阅读