你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS10最新完成長途告訴的開辟教程詳解

iOS10最新完成長途告訴的開辟教程詳解

編輯:IOS開發綜合

1、IOS推送告訴簡介

盡人皆知蘋果的推送告訴從IOS3開端湧現, 每年都邑更新一些新的用法. 比方IOS7湧現的Silent remote notifications(長途靜默推送), iOS8湧現的Category(分類, 也可稱之為快捷答復), iOS9湧現的Text Input action(文本框快捷答復).

而在iOS10, 蘋果可謂是年夜刀闊斧般的, 對長途告訴和當地告訴停止了年夜規模的更新. iOS10推出了全新的UserNotifications框架(iOS10之前附屬於UIKit框架).

新的推送告訴框架, 整合了當地推送和長途推送的點擊處置辦法, 使得之前專門處置推送點擊的辦法只能處置靜默推送了.

2、長途推送告訴引見

1、甚麼是長途推送

在聯網的情形下,由長途辦事器推送給客戶真個告訴,又稱APNs(Apple Push Notification Services)不論運用是翻開照樣封閉的情形下,都能吸收到辦事器推送的長途告訴在聯網狀況下,一切蘋果裝備都邑與蘋果辦事器樹立長銜接

2、長途推送的完成道理:

      1.翻開App時: 發送UDIDBundleIDAPNs加密後前往deviceToken

      2.獲得Token後,App挪用接口,將用戶身份信息和deviceToken發給辦事器,辦事器記載

      3.當推送新聞時, 辦事器依照用戶身份信息找到存儲的deviceToken,將新聞和deviToken發送給APNs

      4.蘋果的APNs經由過程deviceToken, 找到指定裝備的指定法式, 並將新聞推送給用戶

3、完成長途推送功效的條件

      1.真機

      2.調試階段的證書

         iOS_development.cer 用於真機調試的證書

         aps_development.cer 用於真機推送調試能的證書

         xxx.mobileprovision 描寫文件,記載了可以或許調試的手機、電腦和法式

      3.宣布階段的證書

          iOS_distribution.cer 用於宣布app的證書

          aps.cer 用於宣布時,讓app有推送功效的證書

          xxx.mobileprovision 描寫文件,記載了可以或許宣布app的電腦

若何設置裝備擺設證書, 不在本教程內, 請讀者自行處置, 或許參考視頻教程

3、iOS10 全新長途告訴教程

1、 注冊長途推送並獲得DeviceToken

1.創立iOS的項目,並輸出項目名字

2.在AppDelegate中導入頭文件:

 #import <UserNotifications/UserNotifications.h>

3.在application:didFinishLaunchingWithOptions辦法中, 注冊長途告訴

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
 {
 //要求告訴權限, 當地和長途共用
 UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
 [center requestAuthorizationWithOptions:UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError * _Nullable error) {
  if (granted) { 
   NSLog(@"要求勝利"); 
    } else { 
    NSLog(@"要求掉敗"); 
    } 
   }];

 //注冊長途告訴
 [[UIApplication sharedApplication] registerForRemoteNotifications];

 //設置告訴的署理
 center.delegate = self;

 return YES;
 }

4.在吸收長途推送的DeviceToken辦法中, 獲得Token

 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
 { 
 //未來須要將此Token上傳給後台辦事器
 NSLog(@"token:%@", deviceToken);
 }

2、 iOS10長途推送告訴的處置辦法

當點擊了推送後, 假如你願望停止處置. 那末在iOS10中, 還須要設置UNUserNotificationCenterdelegate, 並遵照UNUserNotificationCenterDelegate協定.

和完成上面完成3個辦法, 用於處置點擊告訴時的分歧情形的處置

      willPresentNotification:withCompletionHandler 用於前台運轉

      didReceiveNotificationResponse:withCompletionHandler 用於後台及法式加入

      didReceiveRemoteNotification:fetchCompletionHandler用於靜默推送

//設置告訴的署理
center.delegate = self;

1.前台運轉 會挪用的辦法

前台運轉: 指的是法式正在運轉中, 用戶能看見法式的界面.

iOS10會湧現告訴橫幅, 而在之前的框架中, 前台運轉時, 不會湧現告訴的橫幅.

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
 { 
  NSDictionary *userInfo = notification.request.content.userInfo; 

  //前台運轉推送 顯示白色Label
  [self showLabelWithUserInfo:userInfo color:[UIColor redColor]];

  //可以設置當收到告訴後, 有哪些後果出現(聲響/提示/數字角標)
  completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
 }

2.後台運轉及法式加入 會挪用的辦法

後台運轉: 指的是法式曾經翻開, 用戶看不見法式的界面, 如鎖屏和按Home鍵.

法式加入: 指的是法式沒有運轉, 或許經由過程雙擊Home鍵,封閉了法式.

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
 {
  NSDictionary *userInfo = response.notification.request.content.userInfo; 

  //後台及加入推送 顯示綠色Label
  [self showLabelWithUserInfo:userInfo color:[UIColor greenColor]]; 

  completionHandler();
 }

3.靜默推送告訴 會挪用的辦法

靜默推送: iOS7今後湧現, 不會湧現提示及聲響.

請求:

推送的payload中不克不及包括alertsound字段

須要添加content-available字段, 並設置值為1

例如: {"aps":{"content-available":"1"},"PageKey”":"2"}

 //假如是之前的舊框架, 此辦法 前台/後台/加入/靜默推送都可以處置
 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
 {
   //靜默推送 顯示藍色Label
  [self showLabelWithUserInfo:userInfo color:[UIColor blueColor]]; 

  completionHandler(UIBackgroundFetchResultNewData);
  }

4.處置告訴的公用辦法

開辟中, 點擊告訴的邏輯應該看本身法式的需求.

這裡為了便利演示, 簡略的將告訴的值, 經由過程UILabel顯示在主界面上.

 - (void)showLabelWithUserInfo:(NSDictionary *)userInfo color:(UIColor *)color
 { 
  UILabel *label = [UILabel new];
  label.backgroundColor = color; 
  label.frame = CGRectMake(0, 250, [UIScreen mainScreen].bounds.size.width, 300);
  label.text = userInfo.description;
  label.numberOfLines = 0;
  [[UIApplication sharedApplication].keyWindow addSubview:label];
 }

3、測試長途推送

PushMeBaby是一個簡略的模仿辦事器的Mac小法式, 可以將內容提交給蘋果的APNs辦事器.

為了測試長途告訴, 我們須要裝置此法式.

請前去www.github.com, 搜刮並下載PushMeBaby

應用時:

編譯該項目, 假如報錯, 則正文報錯的代碼, 不影響現實應用.

進入蘋果開辟者網站, 獲得真機調試用的長途推送證書, 導入到項目中

將之前獲得到的DeviceToken, 及測試的文字, 填入該項目中的AppDelegate中的init辦法中.

運轉此項目, 會湧現一個Mac小法式, 點擊Push便可發送長途告訴.

 - (id)init { 
  self = [super init]; 
  if(self != nil) { 
   self.deviceToken = @"de20184c ef0461d5 12c76422 f5b78240 5f657e18 ebf91c9f 01d5560c e2913102";
   self.payload = @"{\\"aps\\":{\\"alert\\":{\\"title\\":\\"himeao\\",\\"subtitle\\":\\"自學成才\\",\\"body\\":\\"iOS10長途&當地推送教程\\"},\\"badge\\":1,\\"sound\\":\\"default\\"},\\"PageKey\\":\\"1\\"}"; 
   self.certificate = [[NSBundle mainBundle] pathForResource:@"aps_development" ofType:@"cer"]; 
  } 
  return self;
  }

總結

以上就是iOS10最新完成長途告訴開辟教程的全體內容,這篇文章的內容對年夜家進修iOS10照樣很有參考自創價值的,願望能對列位iOS開辟者們有所贊助,假如年夜家有疑問可以留言交換。

【iOS10最新完成長途告訴的開辟教程詳解】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved