(三)iOS百度云推送工程配置以及回調(diào)處理

百度推送步驟分析:

1.申請證書

2.創(chuàng)建應(yīng)用

3.配置應(yīng)用

4.配置工程

5.注冊百度云推送并處理回調(diào)

此文主要介紹工程配置和回調(diào)處理

1.下載SDK以及demo文件,找到BPush.h 站刑、BPushCerResource.bundle户辱、libBPush.a,加入工程岳枷,添加時需要注意勾選當前Target

SDK需要以下庫:Foundation.framework、CoreTelephony.framework壁榕、libz.tbd、SystemConfiguration.framework,CoreLocation.framework 如果使用了idfa版需要添加AdSupport.framework 在工程中添加香缺。

2.設(shè)置開啟Remote notifications奥额,xcode8 中需要注意打開push能力開關(guān)苫幢,如下圖:


打開通知開關(guān)

注意:打開push能力開關(guān)編譯可能會報錯,這是只需要點擊上圖中的General-->>Signing-->>點掉Automatically manage signing 再點上重新選擇Team

3.在AppDelegate里面

導入頭文件以及設(shè)置判斷是后臺還是前臺觸發(fā)通知的常量靜態(tài)常量

#import "BPush.h"

#ifdef NSFoundationVersionNumber_iOS_9_x_Max

#import <UserNotifications/UserNotifications.h>

#endif

static BOOL isBackGroundActivateApplication;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

// iOS10 下需要使用新的 API

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

#ifdef NSFoundationVersionNumber_iOS_9_x_Max

UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];

[center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound + UNAuthorizationOptionBadge)

completionHandler:^(BOOL granted, NSError * _Nullable error) {

// Enable or disable features based on authorization.

if (granted) {

[[UIApplication sharedApplication] registerForRemoteNotifications];

}

}];

#endif

}

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

UIUserNotificationType myTypes = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:myTypes categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

}else {

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];

}

#warning 上線 AppStore 時需要修改BPushMode為BPushModeProduction 需要修改Apikey為自己的Apikey

// 在 App 啟動時注冊百度云推送服務(wù)垫挨,需要提供 Apikey


[BPush registerChannel:launchOptions apiKey:@"需要提供 自己的Apikey" pushMode:BPushModeProduction withFirstAction:@"打開" withSecondAction:@"回復" withCategory:@"test" useBehaviorTextInput:YES isDebug:YES];i

// App 是用戶點擊推送消息啟動

NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (userInfo) {

NSLog(@"從消息啟動:%@",userInfo);

[BPush handleNotification:userInfo];}

//角標清0

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

}

// 此方法是 用戶點擊了通知韩肝,應(yīng)用在前臺 或者開啟后臺并且應(yīng)用在后臺 時調(diào)起

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

{

// 打印到日志 textView 中

NSLog(@"********** iOS7.0之后 background **********");

//殺死狀態(tài)下,直接跳轉(zhuǎn)到跳轉(zhuǎn)頁面九榔。

if (application.applicationState == UIApplicationStateInactive && !isBackGroundActivateApplication)

{

//? ? ? ? SkipViewController *skipCtr = [[SkipViewController alloc]init];

//? ? ? ? // 根視圖是nav 用push 方式跳轉(zhuǎn)

//? ? ? ? [_tabBarCtr.selectedViewController pushViewController:skipCtr animated:YES];

//? ? ? ? NSLog(@"applacation is unactive ===== %@",userInfo);

/*

// 根視圖是普通的viewctr 用present跳轉(zhuǎn)

[_tabBarCtr.selectedViewController presentViewController:skipCtr animated:YES completion:nil]; */

}

// 應(yīng)用在后臺哀峻。當后臺設(shè)置aps字段里的 content-available 值為 1 并開啟遠程通知激活應(yīng)用的選項

if (application.applicationState == UIApplicationStateBackground) {

NSLog(@"background is Activated Application ");

// 此處可以選擇激活應(yīng)用提前下載郵件圖片等內(nèi)容。

isBackGroundActivateApplication = YES;

UIAlertView *alertView =[[UIAlertView alloc]initWithTitle:@"收到一條消息" message:userInfo[@"aps"][@"alert"] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];

[alertView show];

}

//? ? [self.window.rootViewController addLogString:[NSString stringWithFormat:@"Received Remote Notification :\n%@",userInfo]];

completionHandler(UIBackgroundFetchResultNewData);

NSLog(@"backgroud : %@",userInfo);

}

// 在 iOS8 系統(tǒng)中哲泊,還需要添加這個方法剩蟀。通過新的 API 注冊推送服務(wù)

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings

{

[application registerForRemoteNotifications];

}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

NSLog(@"test:%@",deviceToken);

[BPush registerDeviceToken:deviceToken];

[BPush bindChannelWithCompleteHandler:^(id result, NSError *error) {

//? ? ? ? [self.viewController addLogString:[NSString stringWithFormat:@"Method: %@\n%@",BPushRequestMethodBind,result]];

// 需要在綁定成功后進行 settag listtag deletetag unbind 操作否則會失敗

// 網(wǎng)絡(luò)錯誤

if (error) {

return ;

}

if (result) {

// 確認綁定成功

if ([result[@"error_code"]intValue]!=0) {

return;

}

[BPush setTag:@"Mytag" withCompleteHandler:^(id result, NSError *error) {

if (result) {

NSLog(@"設(shè)置tag成功");

}}];}}];

// 當 DeviceToken 獲取失敗時,系統(tǒng)會回調(diào)此方法

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

{

NSLog(@"DeviceToken 獲取失敗切威,原因:%@",error);

}

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

{

// App 收到推送的通知

[BPush handleNotification:userInfo];

NSLog(@"********** ios7.0之前 **********");

// 應(yīng)用在前臺 或者后臺開啟狀態(tài)下育特,不跳轉(zhuǎn)頁面,讓用戶選擇先朦。

if (application.applicationState == UIApplicationStateActive || application.applicationState == UIApplicationStateBackground) {

NSLog(@"acitve or background");

UIAlertView *alertView =[[UIAlertView alloc]initWithTitle:@"收到一條消息" message:userInfo[@"aps"][@"alert"] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];

[alertView show];

}else{//殺死狀態(tài)下缰冤,直接跳轉(zhuǎn)到跳轉(zhuǎn)頁面。

}}

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

{

NSLog(@"接收本地通知啦T骸C藿!");

[BPush showLocalNotificationAtFront:notification identifierKey:nil];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刺彩,一起剝皮案震驚了整個濱河市涮拗,隨后出現(xiàn)的幾起案子乾戏,更是在濱河造成了極大的恐慌,老刑警劉巖三热,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼓择,死亡現(xiàn)場離奇詭異,居然都是意外死亡就漾,警方通過查閱死者的電腦和手機呐能,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抑堡,“玉大人摆出,你說我怎么就攤上這事∈籽” “怎么了偎漫?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長有缆。 經(jīng)常有香客問我象踊,道長,這世上最難降的妖魔是什么棚壁? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任杯矩,我火速辦了婚禮,結(jié)果婚禮上袖外,老公的妹妹穿的比我還像新娘史隆。我一直安慰自己,他們只是感情好曼验,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布泌射。 她就那樣靜靜地躺著,像睡著了一般鬓照。 火紅的嫁衣襯著肌膚如雪魄幕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音,去河邊找鬼艇劫。 笑死,一個胖子當著我的面吹牛翼抠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播获讳,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼阴颖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丐膝?” 一聲冷哼從身側(cè)響起量愧,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤钾菊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后偎肃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煞烫,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年累颂,在試婚紗的時候發(fā)現(xiàn)自己被綠了滞详。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡紊馏,死狀恐怖料饥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朱监,我是刑警寧澤岸啡,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站赫编,受9級特大地震影響巡蘸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沛慢,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一赡若、第九天 我趴在偏房一處隱蔽的房頂上張望达布。 院中可真熱鬧团甲,春花似錦、人聲如沸黍聂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽产还。三九已至匹厘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脐区,已是汗流浹背愈诚。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牛隅,地道東北人炕柔。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像媒佣,于是被迫代替她去往敵國和親匕累。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

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

  • 百度推送很簡單默伍,準備工作:在百度云推送平臺注冊應(yīng)用欢嘿,上傳證書衰琐。 步驟一: 百度云推送平臺 http://push....
    香餑餑和餓狼的傳說閱讀 3,203評論 2 11
  • 證書的配置方面,我就不多說了炼蹦,嚴格按照SDK上的步驟羡宙,一步一步的認認真真的配置證書。 下面我來說一下在APPDel...
    Mrxiaowang閱讀 828評論 0 1
  • 極光推送: 1.JPush當前版本是1.8.2框弛,其SDK的開發(fā)除了正常的功能完善和擴展外也緊隨蘋果官方的步伐辛辨,SD...
    Isspace閱讀 6,704評論 10 16
  • 許多集成的步驟個推官網(wǎng)都有了,這里只寫關(guān)于推送的遠程推送和本地通知的步驟和代碼瑟枫。APP在后臺時:走蘋果的APNS通...
    AllureJM閱讀 2,712評論 1 9
  • 在簡單項目中斗搞,有使用到apns推送服務(wù),許多文章有涉及到卻沒有講清楚慷妙。最近做福路通項目僻焚,有使用到,做一個總結(jié)膝擂。 推...
    天空的守望者閱讀 902評論 0 3