ReactNative 整合極光推送jpush-react-native(IOS端)

ReactNative 整合極光推送jpush-react-native(Android端)

http://www.reibang.com/p/cce27f16036d

一效拭、證書

1望蜡、在蘋果官網(wǎng)創(chuàng)建推送證書(生產(chǎn)和開發(fā))

2、在極光推送官網(wǎng)中創(chuàng)建應(yīng)用時需要配置證書(生產(chǎn)和開發(fā))

二、安裝(若參考上文已安裝請忽略)

我的react-native版本是0.42.0

npm install jcore-react-native --save

npm install jpush-react-native --save

react-native link

三带欢、配置

1、自動link(react-native link后)

(1)target ->Build Phases->Link Binary with Libraries 中加入庫

libz.tbd

CoreTelephony.framework

Security.framework

CFNetwork.framework

CoreFoundation.framework

SystemConfiguration.framework

Foundation.framework

UIKit.framework

UserNotifications.framework

libresolv.tbd

(2)RCTJPushModule.xcodeproj 工程會自動添加到 Libraries 目錄里面

(3)AppDelegate.m中增加了一些代碼

(4)target ->BuildSetting->Header Search Paths中添加

$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/RCTJPushModule


等等...

2症虑、手動配置

(1)target ->Capabilities->Push Notifications


(2)在plist文件中NSAppTransportSecurity添加

<dict>

<key>jpush.cn</key>

<dict>

<key>NSExceptionAllowsInsecureHTTPLoads</key>

<true/>

<key>NSIncludesSubdomains</key>

<true/>

</dict>

</dict>


(3)AppDelegate.h

static NSString *appKey = @"你的appKey";? ? //填寫appkey

static NSString *channel = @"";? ? //填寫channel? 一般為nil

static BOOL isProduction = false;? //填寫isProdurion? 平時測試時為false 连霉,生產(chǎn)時填寫true

(4)AppDelegate.m

********引入頭文件

#import <RCTJPushModule.h>

#import "JPUSHService.h"

#ifdef NSFoundationVersionNumber_iOS_9_x_Max

#import <UserNotifications/UserNotifications.h>

#endif

********添加@interface AppDelegate()

@interface AppDelegate()

@end

********didFinishLaunchingWithOptions方法中添加

if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {

JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];

entity.types = UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound;

[JPUSHService registerForRemoteNotificationConfig:entity delegate:self];

}

else if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

//可以添加自定義categories

[JPUSHService registerForRemoteNotificationTypes:(UNAuthorizationOptionBadge |

UNAuthorizationOptionSound |

UNAuthorizationOptionAlert)

categories:nil];

}

else {

//categories 必須為nil

[JPUSHService registerForRemoteNotificationTypes:(UNAuthorizationOptionBadge |

UNAuthorizationOptionSound |

UNAuthorizationOptionAlert)

categories:nil];

}

[JPUSHService setupWithOption:launchOptions appKey:appKey

channel:nil apsForProduction:isProduction];

********添加方法(如果已有請刪除原有的)

- (void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

[JPUSHService registerDeviceToken:deviceToken];

}

//-----------------------------------------------------------------------

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

// 取得 APNs 標(biāo)準(zhǔn)信息內(nèi)容

[[NSNotificationCenter defaultCenter] postNotificationName:kJPFDidReceiveRemoteNotification object:userInfo];

}

//iOS 7 Remote Notification

- (void)application:(UIApplication *)application didReceiveRemoteNotification:? (NSDictionary *)userInfo fetchCompletionHandler:(void (^)? (UIBackgroundFetchResult))completionHandler {

[[NSNotificationCenter defaultCenter] postNotificationName:kJPFDidReceiveRemoteNotification object:userInfo];

}

// 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); // 需要執(zhí)行這個方法沙郭,選擇是否提醒用戶佛呻,有Badge、Sound病线、Alert三種類型可以選擇設(shè)置

}

// iOS 10 Support

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

// Required

NSDictionary * userInfo = response.notification.request.content.userInfo;

if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {

[JPUSHService handleRemoteNotification:userInfo];

[[NSNotificationCenter defaultCenter] postNotificationName:kJPFDidReceiveRemoteNotification object:userInfo];

}

completionHandler();? // 系統(tǒng)要求執(zhí)行這個方法

}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {

//Optional

NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);

}

四吓著、測試推送



參考:

http://www.reibang.com/p/e7f81b5e1807


補(bǔ)充:

"jcore-react-native":"^1.2.5",

"jpush-react-native":"^2.2.0",


最新版的jpush-react-native,react-native版本號0.52.0

最新版的jpush-react-native不需要手動配置這么多東西了送挑,但是按照文檔配置的ios端绑莺,推送發(fā)送不成功,也獲取不到RegistrationID

解決方法:

在AppDelegate.m的didFinishLaunchingWithOptions方法中增加

JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];

? entity.types = UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound;

? [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惕耕,一起剝皮案震驚了整個濱河市纺裁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌司澎,老刑警劉巖欺缘,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挤安,居然都是意外死亡谚殊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蛤铜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫩絮,“玉大人丛肢,你說我怎么就攤上這事⌒跫牵” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵虐先,是天一觀的道長怨愤。 經(jīng)常有香客問我,道長蛹批,這世上最難降的妖魔是什么撰洗? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮腐芍,結(jié)果婚禮上差导,老公的妹妹穿的比我還像新娘。我一直安慰自己猪勇,他們只是感情好设褐,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泣刹,像睡著了一般助析。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椅您,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天外冀,我揣著相機(jī)與錄音,去河邊找鬼掀泳。 笑死雪隧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的员舵。 我是一名探鬼主播脑沿,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼马僻!你這毒婦竟也來了捅伤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤巫玻,失蹤者是張志新(化名)和其女友劉穎丛忆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仍秤,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡熄诡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诗力。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凰浮。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡我抠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袜茧,到底是詐尸還是另有隱情菜拓,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布笛厦,位于F島的核電站纳鼎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏裳凸。R本人自食惡果不足惜贱鄙,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姨谷。 院中可真熱鬧逗宁,春花似錦、人聲如沸梦湘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捌议。三九已至言缤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間禁灼,已是汗流浹背管挟。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留弄捕,地道東北人僻孝。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像守谓,于是被迫代替她去往敵國和親穿铆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容