你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS完成長途推送道理及進程

iOS完成長途推送道理及進程

編輯:IOS開發綜合

推送告訴,是如今的運用必弗成少的功效。那末在 IOS 中,我們是若何完成長途推送的呢?IOS 的長途推送道理又是甚麼呢?在做 IOS 長途推送時,我們會碰到各類各樣的成績。那末起首讓我們預備一些做推送須要的器械。我們須要一個付費的蘋果開辟者賬號(收費的弗成以做長途推送),有了開辟者賬號,我們可以去蘋果開辟者網站,設置裝備擺設本身所須要的推送的相干證書。然後下載證書,供我們前面應用,具體的證書設置裝備擺設進程,我們上面再說。

起首我們要說說iOS推送告訴的根本道理:

蘋果的推送辦事告訴是由本身專門的推送辦事器APNs (Apple Push Notification service)來完成的,其進程是 APNs 吸收到我們本身的運用辦事器收回的被推送的新聞,將這條新聞推送到指定的 iOS 的裝備上,然後再由 iOS裝備告訴到我們的運用法式,我們將會以告訴或許聲響的情勢收到推送回來的新聞。 iOS 長途推送的條件是,裝有我們運用法式的 iOS 裝備,須要向 APNs 辦事器注冊,注冊勝利後,APNs 辦事器將會給我們前往一個 devicetoken,我們獲得到這個 token 後會將這個 token 發送給我們本身的運用辦事器。當我們須要推送新聞時,我們的運用辦事器將新聞依照指定的格局停止打包,然後聯合 iOS 裝備的 devicetoken 一路發給 APNs 辦事器。我們的運用會和 APNs 辦事器保持一個基於 TCP 的長銜接,APNs 辦事器將新新聞推送到iOS 裝備上,然後在裝備屏幕上顯示出推送的新聞。

裝備注冊APNs的流程圖:

1.2222.png

上圖完成了以下步調:

1.Device(裝備)銜接APNs辦事器並攜帶裝備序列號(UUID)

2.銜接勝利,APNs經由打包和處置發生devicetoken並前往給注冊的Device(裝備)

3.Device(裝備)攜帶獲得的devicetoken發送到我們本身的運用辦事器

4.完成須要被推送的Device(裝備)在APNs辦事器和我們本身的運用辦事器的注冊

推送進程圖:

1.333.png

推送的進程經由以下步調:

1.起首,我們的裝備裝置了具有推送功效的運用(運用法式要用代碼注冊新聞推進),我們的 iOS裝備在有收集的情形下會銜接APNs推送辦事器,銜接進程中,APNS 辦事器會驗證devicetoken,銜接勝利後保持一個基於TCP 的長銜接;

2.Provider(我們本身的運用辦事器)收到須要被推送的新聞並聯合被推送的 iOS裝備的devicetoken一路打包發送給APNS辦事器;

3.APNS辦事器將推送信息推送給指定devicetoken的iOS裝備;

4.iOS裝備收到推送新聞後告訴我們的運用法式並顯示和提醒用戶(聲響、彈出框)

比擬直不雅的流程圖:

1.33.png

信息包構造圖:

1.2323.png

上圖顯示的這個新聞體就是我們的運用辦事器(Provider)發送給APNs辦事器的新聞構造,APNs驗證這個構造准確並提取個中的信息後,再將新聞推送到指定的iOS裝備。這個構造體包含五個部門,第一個部門是敕令標示符,第二個部門是我們的devicetoken的長度,第三部門是我們的devicetoken字符串,第四部門是推送消 息體(Payload)的長度,最初一部門也就是真實的新聞內容了,外面包括了推送新聞的根本信息,好比新聞內容,運用Icon右上角顯示若干數字和推送新聞達到時所播放的聲響等

Payload(新聞體)的構造:

{
 “aps”:{
 “alert”:“聽雲給您發送了新新聞”,
 “badge”:1,
 “sound”:“default”
 },
}

這其實就是個JSON構造體,alert標簽的內容就是會顯示在用戶手機上的推送信息,badge顯示的數目(留意是整型)是會在運用Icon右上角顯示的數目,提醒有若干條未讀新聞等,sound就是當推送信息投遞是手機播放的聲響,傳defalut就標明應用體系默許聲響。

上面就是我們推送告訴所須要的證書的推送進程:

1.起首我們要新建一個Certificate Signing Request(也就是CSR)的要求文件

在運用法式裡的應用對象中找到鑰匙串拜訪,選擇從證書發表機構要求證書

1.45.png

1.44.png

留意:郵箱地址,填本身的開辟者賬號,經常使用名,隨意填一個記住就行。然後選擇存儲到磁盤。持續就行。

1.55.png

保留地位在 tingyun(指定本身的文件夾,這裡我選擇的是我的文件夾),點擊存儲

然後點擊完成後我們會在 tingyun 裡看到一個CertificateSigningRequest.certSigningRequest的要求文件,也就是我們說的CSR文件。在我們生成CSR文件的同時,會在鑰匙串拜訪中生成一對秘鑰,稱號為適才我們填寫的經常使用名

2.設置裝備擺設AppID

到蘋果開辟者網站https://developer.apple.com

點擊Account 

1.56.png

選擇 Certificates,identifiers&Profiles 

1.78.png

選擇 Identifiers ->App IDs 點擊上方的+號創立一個 App ID.

1.888.png

Name: 填寫 App 的名字就行

App ID Suffix 選擇不消通配符的及 Explicit App ID

Bundle ID:填寫本身運用的 Bundle ID 必定要和本身運用的分歧.

1.555.png

鄙人面的 App Services 當選擇本身須要的辦事

我們須要推送辦事,所以在Push Notifications上打勾

然後點擊continue

1.666.png

3.創立證書

證書須要創立兩種,一種是開辟的、一種是宣布的,開辟的是做測試用的。

選擇Development 點擊右上角的+號,創立證書,我們起首創立開辟證書

1.99.png

選擇Apple Push Notification service SSL (Sandbox),創立推送辦事證書點擊下一步

1.00.png

這兒的 App ID 選擇我們適才創立的 App ID

然後點擊下一步,下一步

0.09.png

這兒點擊 Choose File,選擇我們適才創立的 CSR 文件.

然後點擊生成(Generate)

最初點擊下載,下載證書。將下載的證書,放到指定地位。

0.08.png 

宣布證書的創立和開辟證書一樣,選擇Production->Apple Push Notification service SSL (Production)前面和開辟證書一樣

0.07.png

0.9888.png

4.添加 Devices:

起首選中你要添加哪一種裝備,然後在左上角點擊“+”號。

0.006.png 

Name 填寫一個裝備名字。

UDID 填寫本身須要參加測試的裝備的 UDID。

然後點擊下一步

0.005.png

然後點擊 Register 便可

0.001.png 

點擊Done。

0.002.png 

000.png

5.查找裝備的 UDID:

用本身的 iOS 裝備銜接到電腦上,翻開 iTunes。

在裝備摘要處可以看見一個序列號,點擊序列號就會釀成 UDID。

0091.png 

6.生成設置裝備擺設文件

設置裝備擺設文件也有兩種,一種是開辟的,一種是宣布的,開辟的使我們做測試須要的,宣布的是我們在 Appstore 上宣布時須要的,我們都須要生成。

我們師長教師成開辟設置裝備擺設文件,選擇Provisioning Profiles->Development點擊右上角的+號。

0092.png 

選擇iOS App Development 點擊下一步

0093.png

這兒的 App ID 依然選擇我們適才創立的 App ID

0094.png

0095.png 

這兒選擇我們開辟者的證書,假如不曉得是哪一個選擇全體便可

0096.png 

這兒選擇我們的測試裝備,假如沒有則在後面的Devices外面添加便可

0097.png 

0098.png

隨意取個名字便可,然後下載上去

1123.png 

宣布設置裝備擺設文件和開辟設置裝備擺設文件一樣創立,選擇Distribution->Ad Hoc便可,前面與宣布設置裝備擺設文件一樣。

1125.png 

1126.png 

11250.png

證書設置裝備擺設完成,翻開我們創立的運用項目

翻開AppDelegate.m 文件,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 辦法中添加上面代碼,注冊新聞推送

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 // Override point for customization after application launch.
  /** 新聞推送注冊 */
 if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
  
  UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
  [application registerUserNotificationSettings:settings];
  [application registerForRemoteNotifications];
 }else {
  [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
 }
 
 return YES;
}
上面辦法是前往 ANPs 蘋果推送辦事器生成的獨一標識
/** 吸收辦事器傳回的裝備獨一標識 token */
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
 
 // 第一次運轉獲得到DeviceToken時光會比擬長!
 // 將deviceToken轉換成字符串,以便後續應用
 NSString *token = [deviceToken description];
 NSLog(@"description %@", token);
}

上面辦法是當有新聞推送回來時,吸收推送新聞 
/** 裝備吸收到來自蘋果推送辦事器的新聞時觸發的,用來顯示推送新聞 */

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

 NSLog(@"userInfo == %@",userInfo);
}

下面辦法是當注冊推送辦事掉敗時,吸收毛病信息
/** 注冊推送辦事掉敗 */
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
 NSLog(@"注冊掉敗 %@",error);
}

辦事器端(Java辦事器)

辦事器端我們須要,一個後綴為. p12的證書,和須要的 jar 包

辦事器真個證墨客成方法:

翻開我們後面下載的證書,在鑰匙串中找到它

0.98888.png 

點擊鼠標右鍵選擇導出

0.998.png 

導出後綴為.p12的文件保留到本身的電腦上,須要輸出一個暗碼,在 Java 辦事器端要用到

0.9889.png 

Java辦事器端須要的 Jar 包

0.87.png

Java 辦事器端代碼:

import javapns.back.PushNotificationManager;
import javapns.back.SSLConnectionHelper;
import javapns.data.Device;
import javapns.data.PayLoad;
public class pushService {
 public static void main(String[] args) {
  
  
 try {
    String deviceToken = "eab6df47eb4f81e0aaa93bb208cffd7dc3884fd346ea0743fcf93288018cfcb6";
    //被推送的iphone運用法式標示符  
    PayLoad payLoad = new PayLoad();
    payLoad.addAlert("測試我的push新聞");
    payLoad.addBadge(1);
    payLoad.addSound("default");
      
    PushNotificationManager pushManager = PushNotificationManager.getInstance();
    pushManager.addDevice("iphone", deviceToken);
    
       //測試推送辦事器地址:gateway.sandbox.push.apple.com /2195 
   //產物推送辦事器地址:gateway.push.apple.com / 2195 
    String host="gateway.sandbox.push.apple.com"; //測試用的蘋果推送辦事器
    int port = 2195;
    String certificatePath = "/Users/hsw/Desktop/PushTest/PushTest.p12"; //適才在mac體系下導出的證書
    
    String certificatePassword= "123456";
   
    pushManager.initializeConnection(host, port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
      
    //Send Push
    Device client = pushManager.getDevice("iphone");
    pushManager.sendNotification(client, payLoad); //推送新聞
    pushManager.stopConnection();
    pushManager.removeDevice("iphone");
   }
   catch (Exception e) {
    e.printStackTrace();
    System.out.println("push faild!");
    return;
   }
   System.out.println("push succeed!");
   }

}

本文已被整頓到了《iOS推送教程》,迎接年夜家進修浏覽。

以上就是完全的iOS長途推送道理及完成進程,願望對年夜家的進修有所贊助。

【iOS完成長途推送道理及進程】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

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