react-native ios 集成极光推送走过的坑
2018-10-15 本文已影响0人
一只特例独行de猪
集成最新极光推送教程
- github地址:https://github.com/jpush/jpush-react-native
- ios集成极光sdk指南:https://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/
需要注意的地方
- 需要在apple开发者中心申请推送证书,并导出p12然后导入都极光控制台。
- Xcode需要打开推送开关
- 测试推送只能再真机上测试,不能在模拟器测试推送功能
遇到的问题
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