iOS消息遠程推送通知
更新時間:2016年09月21日 16:23:21 投稿:lijiao
這篇文章主要為大家詳細介紹了iOS消息遠程推送通知代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了iOS消息推送、iOS遠程通知代碼,供大家參考,具體內(nèi)容如下
消息推送
/* 要開發(fā)測試消息機制的程序,必須用真機測試 推送消息的類型 UIRemoteNotificationTypeNone 不接收推送消息 UIRemoteNotificationTypeBadge 接收圖標數(shù)字 UIRemoteNotificationTypeSound 接收音頻 UIRemoteNotificationTypeAlert 接收消息文字 UIRemoteNotificationTypeNewsstandContentAvailability 接收訂閱消息 要想監(jiān)聽到注冊的deviceToken需要在蘋果的開發(fā)者中心,進行一些設(shè)置工作才可以。 */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 設(shè)置應(yīng)用程序能夠接收APNS推送的消息 [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } #pragma mark - 獲取DeviceToken - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"%@", deviceToken); // 1. 從系統(tǒng)偏好取之前的token NSData *oldToken = [[NSUserDefaults standardUserDefaults]objectForKey:@"deviceToken"]; // 2. 新舊token進行比較 if (![oldToken isEqualToData:deviceToken]) { // 3. 如果不一致,保存token到系統(tǒng)偏好 [[NSUserDefaults standardUserDefaults]setObject:deviceToken forKey:@"deviceToken"]; // 4. 使用post請求傳輸新舊token至服務(wù)器 // 1) url // 具體的URL地址以及POST請求中的參數(shù)和格式,是由公司的后端程序員提供的 // 2) request POST body(包含新舊token的數(shù)據(jù)) // 3) connection 的異步 } }
遠程通知
/** 遠程消息推送必須在真機上運行! */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 需要告訴蘋果的服務(wù)器,當(dāng)前應(yīng)用程序需要接收遠程通知 [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; return YES; } #pragma mark - 獲取到設(shè)備的代號(令牌) // 接收到蘋果返回的設(shè)備代號 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // 第一次運行獲取到DeviceToken時間會比較長! NSLog(@"%@", deviceToken); // 將deviceToken轉(zhuǎn)換成字符串,以便后續(xù)使用 NSString *token = [deviceToken description]; NSLog(@"description %@", token); // ======================================================= // 如果DeviceToken發(fā)生變化,需要通知服務(wù)器 // 每次都記錄住從服務(wù)器獲取到得DeviceToken // 再次獲取時進行比對 // 從偏好設(shè)置取出當(dāng)前保存的Token NSString *oldToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"]; // 當(dāng)Token發(fā)生變化時,提交給服務(wù)器保存新的Token // if (![oldToken isEqualToString:token]) { // // // 將deviceToken通過Post請求,提交給自己的服務(wù)器即可! // // 發(fā)送Post請求 // NSURL *url = [NSURL URLWithString:@"公司后臺服務(wù)器的網(wǎng)址"]; // NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.f]; // // request.HTTPMethod = @"POST"; // request.HTTPBody = @"轉(zhuǎn)換后的設(shè)備ID以及其他信息[之前的Token]"; // // // SQL: update t_deviceTable set token = newToken where token = oldToken; // // // 同步:必須執(zhí)行完才能繼續(xù) // // 異步:直接交給其他線程工作,不干擾主線程工作,用戶也感覺不到延遲 // [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { // // 偷偷的將用戶信息傳送到公司的服務(wù)器 // }]; // } // 將Token保存至系統(tǒng)偏好 [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"DeviceToken"]; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS實現(xiàn)獲取系統(tǒng)iTunes音樂的方法示例
這篇文章主要給大家介紹了關(guān)于iOS如何實現(xiàn)獲取系統(tǒng)iTunes音樂的相關(guān)資料,文中通過示例代碼給大家詳細介紹了實現(xiàn)的方法,并給大家介紹了MPMediaPickerController的相關(guān)知識,對大家的學(xué)習(xí)或者工作具有一定的幫助,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11iOS逆向工程使用dumpdecrypted工具給App脫殼
這篇文章主要介紹了iOS逆向工程使用dumpdecrypted工具給App脫殼的相關(guān)資料,本文圖文并茂給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09詳解IOS的Automatically Sign在設(shè)備上打包
本篇教程主要給大家分享了IOS的Automatically Sign如何在設(shè)備上直接打包,有需要的朋友參考學(xué)習(xí)下。2018-01-01iOS開發(fā)中UITableview控件的基本使用及性能優(yōu)化方法
這篇文章主要介紹了iOS開發(fā)中UITableview控件的基本使用及性能優(yōu)化方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12IOS 開發(fā)之swift中UIView的擴展使用的實例
這篇文章主要介紹了IOS 開發(fā)之swift中UIView的擴展使用的實例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09