最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS消息遠(yuǎn)程推送通知

 更新時間:2016年09月21日 16:23:21   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了iOS消息遠(yuǎn)程推送通知代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了iOS消息推送、iOS遠(yuǎn)程通知代碼,供大家參考,具體內(nèi)容如下

消息推送

/*
 要開發(fā)測試消息機(jī)制的程序,必須用真機(jī)測試
 
 推送消息的類型
 UIRemoteNotificationTypeNone  不接收推送消息
 UIRemoteNotificationTypeBadge  接收圖標(biāo)數(shù)字
 UIRemoteNotificationTypeSound  接收音頻
 UIRemoteNotificationTypeAlert  接收消息文字
 UIRemoteNotificationTypeNewsstandContentAvailability 接收訂閱消息
 
 要想監(jiān)聽到注冊的deviceToken需要在蘋果的開發(fā)者中心,進(jìn)行一些設(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進(jìn)行比較
  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 的異步
  }
}

遠(yuǎn)程通知

/**
 遠(yuǎn)程消息推送必須在真機(jī)上運(yùn)行!
 */
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // 需要告訴蘋果的服務(wù)器,當(dāng)前應(yīng)用程序需要接收遠(yuǎn)程通知
  [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
  
  return YES;
}

#pragma mark - 獲取到設(shè)備的代號(令牌)
// 接收到蘋果返回的設(shè)備代號
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
  // 第一次運(yùn)行獲取到DeviceToken時間會比較長!
  NSLog(@"%@", deviceToken);
  
  // 將deviceToken轉(zhuǎn)換成字符串,以便后續(xù)使用
  NSString *token = [deviceToken description];
  NSLog(@"description %@", token);
  
  // =======================================================
  // 如果DeviceToken發(fā)生變化,需要通知服務(wù)器
  // 每次都記錄住從服務(wù)器獲取到得DeviceToken
  // 再次獲取時進(jìn)行比對
  // 從偏好設(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實(shí)現(xiàn)按鈕點(diǎn)擊選中與被選中切換功能

    iOS實(shí)現(xiàn)按鈕點(diǎn)擊選中與被選中切換功能

    這篇文章主要介紹了iOS實(shí)現(xiàn)按鈕點(diǎn)擊選中與被選中切換功能,需要的朋友可以參考下
    2017-07-07
  • iOS中sqlite數(shù)據(jù)庫的原生用法

    iOS中sqlite數(shù)據(jù)庫的原生用法

    這篇文章主要為大家詳細(xì)介紹了iOS中sqlite數(shù)據(jù)庫的原生用法,sqlite數(shù)據(jù)庫相信各位早已耳聞,非常輕巧的一個數(shù)據(jù)庫,數(shù)據(jù)庫僅一個文件,即建即用,感興趣的小伙伴們可以參考一下3
    2016-05-05
  • iOS中使用UItableviewcell實(shí)現(xiàn)團(tuán)購和微博界面的示例

    iOS中使用UItableviewcell實(shí)現(xiàn)團(tuán)購和微博界面的示例

    這篇文章主要介紹了iOS中使用UItableviewcell實(shí)現(xiàn)團(tuán)購和微博界面的示例,開發(fā)語言基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-01-01
  • IOS 照片編輯的view封裝的實(shí)例詳解

    IOS 照片編輯的view封裝的實(shí)例詳解

    這篇文章主要介紹了IOS 照片編輯的view封裝的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • iOS自定義選擇框代碼分享

    iOS自定義選擇框代碼分享

    這篇文章主要為大家分享了iOS自定義選擇框的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • iOS實(shí)現(xiàn)啟動引導(dǎo)頁與指紋解鎖的方法詳解

    iOS實(shí)現(xiàn)啟動引導(dǎo)頁與指紋解鎖的方法詳解

    這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)啟動引導(dǎo)頁與指紋解鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • 兩種iOS隱藏導(dǎo)航欄的正確方法

    兩種iOS隱藏導(dǎo)航欄的正確方法

    這篇文章主要為大家詳細(xì)介紹了iOS導(dǎo)航欄的正確隱藏方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • iOS圖片拉伸小技巧

    iOS圖片拉伸小技巧

    這篇文章主要為大家詳細(xì)介紹了iOS圖片拉伸小技巧,由淺入深的幫助大家掌握iOS圖片拉伸的相關(guān)技巧,感興趣的小伙伴們可以參考一下
    2016-04-04
  • IOS代碼筆記之仿電子書書架效果

    IOS代碼筆記之仿電子書書架效果

    這篇文章主要為大家詳細(xì)介紹了IOS仿電子書書架效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • iOS中UIImagePickerController圖片選取器的用法小結(jié)

    iOS中UIImagePickerController圖片選取器的用法小結(jié)

    UIImagePickerController平時就是用來做應(yīng)用中從相冊中選取圖片功能的,這里我們就來整理一下iOS中UIImagePickerController圖片選取器的用法小結(jié),需要的朋友可以參考下
    2016-05-05

最新評論

汉川市| 巨鹿县| 长葛市| 临朐县| 岳西县| 贵德县| 鄂伦春自治旗| 宁陵县| 新安县| 若羌县| 桓台县| 蓝田县| 全椒县| 洮南市| 西畴县| 旬邑县| 永济市| 长丰县| 获嘉县| 怀远县| 公主岭市| 赫章县| 工布江达县| 普陀区| 竹北市| 讷河市| 格尔木市| 维西| 泾川县| 玛沁县| 东安县| 安徽省| 镇巴县| 邻水| 阳春市| 南京市| 皋兰县| 清镇市| 鲁山县| 肃北| 宁陵县|