百度推送

大家在項目開發(fā)中都做過推送!例如:極光推送、信鴿推送、個推等,使用的都是集成過后的SDK,其原理都相同。
這里做一下百度推送。

  1. 百度賬號的注冊申請和審核
    登錄百度云推送:http://push.baidu.com/fc。填寫相關(guān)資料、審核。 審核通過后下載SDK,創(chuàng)建應(yīng)用(上傳相應(yīng)的推送證書格式看要求到出),默認創(chuàng)建的應(yīng)用是,開發(fā)者測試的,上線后要改成生產(chǎn)的。
  2. SDK的導入與配置
    1)所使用的SDK很簡單。(里面有個測試音頻text.caf)


    屏幕快照 2.19.28.png

    2)相應(yīng)的庫是否導入


    屏幕快照2.20.16.png

    3)證書要帶推送功能
  3. SDK在項目中的使用
    1)啟動時寫的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//***********************關(guān)于如何設(shè)置badge角標加1的方法***********************
/* 
服務(wù)端推送的badge是幾就會顯示幾,你只需要跟服務(wù)端同步消息數(shù)目,然后讓服務(wù)端自己,該推送幾,就推送幾,比如你應(yīng)用打開的時候,或者進入后臺的時候跟服務(wù)端同步,這個點,需要你們自己去設(shè)計,應(yīng)用沒有消息的時候,服務(wù)端推送了1,當應(yīng)用打開時候,告訴服務(wù)端,app沒點擊通知,那下次應(yīng)用推送2,依次類推。 
*/
 // iOS8 下需要使用新的 API 
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 測試 開發(fā)環(huán)境 時需要修改BPushMode為BPushModeDevelopment 需要修改Apikey為自己的Apikey 
// 在 App 啟動時注冊百度云推送服務(wù),需要提供 Apikey 
[BPush registerChannel:launchOptions apiKey:@"Apikey改成自己的" pushMode:BPushModeDevelopment withFirstAction:nil withSecondAction:nil withCategory:nil isDebug:YES]; 
// App 是用戶點擊推送消息啟動 
NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
if (userInfo) { 
NSLog(@"從消息啟動:%@",userInfo); [BPush handleNotification:userInfo]; 
} 
//角標清0 
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}

2)點擊推送消息

// 此方法是 用戶點擊了通知,應(yīng)用在前臺 或者開啟后臺并且應(yīng)用在后臺 時調(diào)起
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 
completionHandler(UIBackgroundFetchResultNewData); 
NSLog(@"********** iOS7.0之后 background **********"); 
// 應(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)頁面。 
{ 
//這里實現(xiàn)頁面跳轉(zhuǎn) 
}
}

3)注冊推送服務(wù)

// 在 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) { 
// 需要在綁定成功后進行 settag listtag deletetag unbind 操作否則會失敗 
if (result) { 
[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);
}

4)收到推送消息時

- (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(@"接收本地通知啦?。?!"); 
[BPush showLocalNotificationAtFront:notification identifierKey:nil];
}

4.開啟和關(guān)閉推送按鈕
說說我的思路和做法:本地存一個參數(shù)1或者0 ,例如:status用于存放狀態(tài)。加一個按鈕,點擊關(guān)閉狀態(tài)status存放0,同時UIUserNotificationType設(shè)置為:UIUserNotificationTypeNone UIRemoteNotificationType設(shè)置為:UIRemoteNotificationTypeNone 反之設(shè)置回聲音、徽章、彈窗提醒。 其他的跳轉(zhuǎn)頁面等操作可以預判所存放狀態(tài)status.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容