你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS新聞推送道理及詳細完成代碼

iOS新聞推送道理及詳細完成代碼

編輯:IOS開發綜合

1、新聞推送道理

在完成新聞推送之前先說起幾個於推送相干概念,以下圖1-1:

1、Provider:就是為指定IOS裝備運用法式供給Push的辦事器,(假如IOS裝備的運用法式是客戶真個話,那末Provider可以懂得為辦事端[新聞的提議者]);

2、APNS:Apple Push Notification Service[蘋果新聞推送辦事器];

3、iPhone:用來吸收APNS下發上去的新聞;

4、Client App:IOS裝備上的運用法式,用來吸收iphone傳遞APNS下發的新聞到制訂的一個客戶端app[新聞的終究呼應者];

上圖可以分為三個階段:

階段一:Provider[辦事端]把要發送的新聞,目標IOS裝備標識打包,發送給APNS;

階段二:APNS在本身的已注冊Push辦事的IOS裝備列表中,查找有響應標識的IOS裝備,並將新聞發送到IOS裝備;

階段三:IOS裝備把發送的新聞傳遞給對應的運用法式,而且依照設定彈出Push告訴。

詳細進程,以下圖1-2:

1、[Client App]注冊新聞推送;

2、[Client App]跟[APNS Service]要deviceToken, Client App吸收deviceToken;

3、[Client App]將deviceToken發送給[Provider]Push辦事端法式;

4、當Push辦事端法式知足發送新聞前提了,[Provider]向[APNS Service]發送新聞;

5、[APNS Service]將新聞發送給[Client App].

2、新聞推送完成

1、生成*.certSigningRequest文件,步調以下:

[MacBook-運用法式-適用對象-鑰匙串拜訪-證書助手-從證書機構求證書-證手札息(用戶電子郵箱地址{填寫您的郵箱,如:[email protected]},經常使用稱號{隨意率性,如:PushDemo},要求是:{單選,選擇‘存儲到磁盤'})-持續-保留],這時候會在您指定的處所生成你指定的文件,默許為CertificateSigningRequest.certSigningRequest文件,這裡定名為:PushDemo.certSigningRequest.在此*.certSigningRequest曾經生成,詳細操作步調如圖所示。

假如生成勝利,則會在[鑰匙串拜訪|登錄|密鑰]欄目中列出與*.certSigningRequest聯系關系的密鑰,這裡是PushDemo,如圖所示:

2、新建一個App ID(在蘋果開辟者賬號中設置裝備擺設)

(1)登錄iOS Dev Center,登錄勝利後,點擊(iOS Provisioning Portal對應鏈接),如圖所示:

(2)創立New App ID[App IDsàManageàNew App ID]( Description{填寫您對此App ID的描寫,如:iShop},Bundle Seed ID(App ID Prefix){選擇綁定App ID前綴,如:默許選擇Generate New},Bundle Identifier(App ID Suffix){填寫綁定App ID後綴,如:com.yourcorp.iShop}),以下圖所示:

如許就會生成上面這筆記錄,如圖所示:

(3)設置裝備擺設上一步中生成的App ID,讓其支撐新聞推送[點擊2-6中的Configureà選中Enable for Apple Push Notification serviceà點擊Configure],如圖所示:

(4) Generate a Certificate Signing Request(生成安排要求認證)[點擊2-7中的2ConfigureàContinueà步調1生成的*certSigningRequest文件(這裡是iShop.certSigningRequest)-Generate-生成完成後將其下載上去,定名為:aps_developer.cer],雙擊aps_developer.cer證書{將證書與密鑰聯系關系,並將證書導入到MacBook中},以下圖所示:

(5)創立Development Provisioning Profiles[開辟允許設置裝備擺設文件](Provisioning| Development|New Profile),詳細操作流程以下圖所示:

點擊圖中Submit,生成Development Provisioning Profiles[開辟允許設置裝備擺設文件],這裡是:iShopDevprofile.mobileprovision以下圖所示:

下載此開辟允許證書(用於聯機調試)。

總結,到如今為止,我們曾經生成:A:*.certSigningRequest文件(在步調(4)中應用,用於生成證書B)、B:aps_developer_identity.cer證書(在Provider[Push辦事器]辦事端運用應用)、C:*..mobileprovision開辟允許設置裝備擺設文件(在Client App客戶端運用聯機調試應用)。

3、新建一個項目

1. 創立一個"single view application" project,為省事,你設置的"Company Identifier" + "Production“必需和step 5創立的App ID的"bundle identifier"分歧。
2. 在AppDelegate.mfile的"didFinishLaunchingWithOptions" method裡,添加以下代碼 (用於為app register push notification feature):

//Letthedeviceknowwewanttoreceivepushnotifications
[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];



3.在AppDelegate.mfile裡添加以下2個methods (用來handle register remote notification with device token和register error的events)
-(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken

{
NSLog(@"Mytokenis:%@",deviceToken);
}

-(void)application:(UIApplication*)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@"Failedtogettoken,error:%@",error);
}

4. 運轉該app in real device (simulator doesn't support push notification)。這時候你會在device上看到一個popup Window (該窗口只會湧現一次,重裝app不會再湧現),提醒你該app會send push notification給你,假如贊成則clickOK,分歧意則click "Now allow”。假如選擇了OK,那末在"Setting > Notifications“裡會有你的app在list裡。並且這時候你的Xcode output console會顯示你的device token。

5: export "PushDemo" private key to a ".p12" file(該文件會在前面生成apns provider的.p12 or .pem file時用到)
1). right click "PushDemo“ private key and select "Export ..."PushDemo
2). Save the private key as “PushDemoKey.p12” file, click Save button
3). 這時候會讓你輸出2次用於加密該.p12 file的暗碼,例如用"123321",接著會請求你輸出一次your mac account password

6: 在5中生成的“PushDemoKey.p12” file和step 6生成的"aps_development.cer" file是用於APNS provider side的源文件,APNS Provider side停止push message時要用到的"cert + key" file就是經由過程這2個file來生成。該Step就是用來生成for APNS provider side (php version)要用到這個"cert + key" pem file.

1)open Terminal, go to Desktop (假定這2個file都在desktop裡)
2)履行以下敕令來生成和apns cer file對應的pem file "PushDemoCert.pem"

opensslx509-inaps_development.cer-informder-outPushDemoCert.pem

3)履行以下敕令來生成和private key .p12 file對應的pem file "PushDemoKey.pem" (留意:履行進程會請求你輸出"PushDemoKey.p12"創立時設置的暗碼,和設置"PushDemoKey.pem”的暗碼)

opensslpkcs12-nocerts-outPushDemoKey.pem-inPushDemoKey.p12

4)履行以下敕令把step 11.2生成的cert pem file和step 11.3生成的key pem file分解為一個pem file"PushDemoCK.pem"

catPushDemoCert.pemPushDemoKey.pem>PushDemoCK.pem

7:在5生成的“PushDemoKey.p12” file和step 6生成的"aps_development.cer" file是用於APNS provider side的源文件,該step是簡略測試這2個file能否有用
1)open Terminal, go to Desktop (假定這2個file都在desktop裡)
2) 履行以下敕令來測試能否可以或許connect apple供給的不經加密(即不需應用任何證書!)的APNS server

telnetgateway.sandbox.push.apple.com2195

假如你看到以下輸入,則表現你的電腦可以connect APNS. 假如湧現error,那末check你的firewall能否許可outgoing connections on port 2195。
Trying17.172.233.65...
Connectedtogateway.sandbox.push-apple.com.akadns.net.
Escapecharacteris'^]'.
Press Ctrl+C to close the connection.

3)履行以下敕令來測試能否可以或許connect apple供給的經加密(需應用2) and 3)生成的2個pem file!)的APNS "sandbox“ server for development.

openssls_client-connectgateway.sandbox.push.apple.com:2195-certPushDemoCert.pem-keyPushDemoKey.pem

履行進程中會要你輸出PushDemoKey.pem生成時設置的暗碼。假如connect server勝利,就會期待你輸出字串,你可以輸出隨意率性字串,然後回車,就會disconnectserver。假如銜接不勝利,則openssl會顯示毛病信息。
留意:現實上有2個APNS servers: the “sandbox” server (用於testing) the live server(用於production mode)。我們這裡測試的是sandbox server。live apns server的操作相似。

8:創立provider server side (php version)
1). DownloadSimplePush PHP codeto your mac machine and then unzip it.
2). 去失落SimplePushfolder裡的pk.pem (它沒用),把step 11.4生成的"PushDemoCK.pem" copy toSimplePushfolder
3). 修正simplepush.phpfile上面幾行:

// Put your device token here (without spaces):
//device token來自Step 10的第4點,在output console獲得,留意:要去失落前後的尖括號,和中央的一切空格
$deviceToken= '43fcc3cff12965bc45bf842bf9166fa60e8240c575d0aeb0bf395fb7ff86b465';
// Put your private key's passphrase here:
//該值是 3)生成PushDemoKey.pem時設置的暗碼
$passphrase= '123456';
// Put your alert message here:
$message= 'My first push notification!';
//.....stream_context_set_option($ctx, 'ssl', 'local_cert', 'PushDemoCK.pem');

4). 在terminal Window裡,go to the simplepush folder,然後履行以下敕令,你的iPhone應當會收到一條push message。

phpsimplepush.php

留意:假如你的app在iphone裡是正在運轉,並且app是在front end時,當它收到push message時是不會湧現在iPhone頂部的notification area的!

參考文章:http://mmz06.blog.163.com/blog/static/121416962011111710934946/

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐本站。     

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

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