集成最新極光推送教程
- github地址:https://github.com/jpush/jpush-react-native
- ios集成極光sdk指南:https://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/
需要注意的地方
- 需要在apple開(kāi)發(fā)者中心申請(qǐng)推送證書(shū)妄田,并導(dǎo)出p12然后導(dǎo)入都極光控制臺(tái)俺亮。
- Xcode需要打開(kāi)推送開(kāi)關(guān)
- 測(cè)試推送只能再真機(jī)上測(cè)試,不能在模擬器測(cè)試推送功能
遇到的問(wèn)題
ios推送deviceToken拿不到疟呐,不彈出獲取推送權(quán)限的提示框
確認(rèn)極光上的應(yīng)用設(shè)置,開(kāi)發(fā)證書(shū)和生產(chǎn)證書(shū)都是通過(guò)驗(yàn)證的,app developer上應(yīng)用的push也開(kāi)綠燈了铅辞,xcode輸出:
Not get deviceToken yet. Maybe: your certificate not configured APNs
其他問(wèn)題排除以后,這個(gè)問(wèn)題的原因是未向蘋果apns服務(wù)器注冊(cè)設(shè)備萨醒,
所以可以在AppDelegate.m加入原生代碼(這個(gè)參考了ios集成極光sdk指南操作的):
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"注冊(cè)遠(yuǎn)程推送成功——————%@",deviceToken);
[JPUSHService registerDeviceToken:deviceToken];
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error{
NSLog(@"注冊(cè)遠(yuǎn)程推送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];
}
另外其實(shí)jpush-react-native對(duì)ios注冊(cè)apns服務(wù)器這塊也做了接口斟珊,只是我沒(méi)注意到,參考github文檔api發(fā)現(xiàn):
JPushModule.initPush()
初始化 JPush富纸,這個(gè)方法初始化推送功能 iOS 會(huì)彈出獲取推送權(quán)限的提示框(注意這個(gè)系統(tǒng)提示框只會(huì)觸發(fā)一次囤踩,如果用戶首次不同意,之后需要用戶到設(shè)置中修改推送權(quán)限)晓褪。
有些我們不懂的地方堵漱,我們也可以參考jpush-react-native的example:https://github.com/jpush/jpush-react-native/tree/master/example