亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS消息推送原理及具體實現代碼

2020-07-26 03:12:57
字體:
來源:轉載
供稿:網友

一、消息推送原理

在實現消息推送之前先提及幾個于推送相關概念,如下圖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].

二、消息推送實現

1、生成*.certSigningRequest文件,步驟如下:

[MacBook-應用程序-實用工具-鑰匙串訪問-證書助手-從證書機構求證書-證書信息(用戶電子郵箱地址{填寫您的郵箱,如:your@email.com},常用名稱{任意,如: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提供的不經加密(即不需使用任何證書?。┑腁PNS 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?。┑腁PNS "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/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網?!    ?/p>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一级揄自揄精品视频| 欧美国产精品人人做人人爱| 亚洲国产日韩欧美在线图片| 92看片淫黄大片欧美看国产片| 北条麻妃在线一区二区| 欧美精品video| 欧洲午夜精品久久久| 日韩精品视频免费在线观看| 成人免费高清完整版在线观看| 成人午夜在线观看| 久久久久久久久久亚洲| 日韩欧美aⅴ综合网站发布| 欧美日韩综合视频网址| 91老司机精品视频| 91在线观看免费高清完整版在线观看| 日韩精品一区二区视频| 欧美日韩视频免费播放| 日韩av网址在线| 91av在线精品| 国产日韩精品在线| 国产成人精品亚洲精品| 欧美日韩在线另类| 国产一区二区三区免费视频| 成人免费观看网址| 亚洲免费人成在线视频观看| 久久久久一本一区二区青青蜜月| 久久久久久国产| 欧美性高潮在线| 欧美精品videosex极品1| 有码中文亚洲精品| 日韩在线观看免费高清完整版| 九九久久国产精品| 国产精品久久久久久久久久久久久| 91精品久久久久久| 在线色欧美三级视频| 色偷偷综合社区| 欧美激情一级欧美精品| 欧美一区二区三区……| 亚洲美女性视频| 欧美激情精品久久久久久变态| 欧美日韩xxxxx| 亚洲电影免费观看| 亚洲欧美激情精品一区二区| 日韩av在线精品| 欧美成人sm免费视频| 国外成人在线直播| 欧美多人爱爱视频网站| 久久亚洲精品视频| 国产不卡一区二区在线播放| 久久久国产一区二区三区| 中文字幕精品久久久久| 国产精品视频中文字幕91| 欧美精品久久久久a| 中文字幕九色91在线| 在线观看91久久久久久| 亚洲国产精品va| 中文字幕久久久av一区| 一色桃子一区二区| 国模视频一区二区| 国产一区私人高清影院| 日韩亚洲欧美中文高清在线| 国产成人久久久| 性欧美亚洲xxxx乳在线观看| 中文字幕日韩专区| 日韩久久午夜影院| 欧美午夜视频一区二区| 欧美老女人xx| 亚洲第一网站免费视频| 欧美专区在线观看| 久久频这里精品99香蕉| 91精品免费久久久久久久久| 色诱女教师一区二区三区| 黄色成人av网| 亚洲色图综合网| 91精品国产高清久久久久久久久| www.亚洲男人天堂| 国产精品美乳一区二区免费| 91精品久久久久久久久久久| 亚洲综合在线中文字幕| 成人精品一区二区三区| 欧美激情在线狂野欧美精品| 中文字幕亚洲色图| 黄色精品一区二区| 国产精品海角社区在线观看| 成人网欧美在线视频| 日韩视频―中文字幕| 日产精品99久久久久久| 亚洲国产日韩欧美在线99| 中文字幕日韩在线视频| 亚洲xxxx视频| 亚洲精品国偷自产在线99热| 日韩av快播网址| zzjj国产精品一区二区| 亚洲成人av在线播放| 色妞色视频一区二区三区四区| 精品福利在线视频| 欧美人在线视频| 久久影视三级福利片| 国产91成人video| 亚洲a成v人在线观看| 亚洲电影天堂av| 日韩激情在线视频| 中文字幕精品视频| 欧美亚州一区二区三区| 97在线精品国自产拍中文| 国产成人小视频在线观看| 国产亚洲欧美日韩一区二区| 欧美日韩中文字幕综合视频| 中文字幕一区日韩电影| 国产精品r级在线| 欧美成人精品h版在线观看| 国产精品成熟老女人| 性色av一区二区三区免费| 欧美性生交xxxxx久久久| 91国产中文字幕| 国产一区二区精品丝袜| 亚洲最大福利视频网| 日韩在线免费视频观看| 国产精品视频xxxx| 91国产视频在线播放| 亚洲国产高清高潮精品美女| 精品女同一区二区三区在线播放| 国产va免费精品高清在线观看| 国产九九精品视频| 亚洲91精品在线观看| 精品久久久久久久久久久久久久| 精品久久久久久国产| 国产国语刺激对白av不卡| 亚洲图片欧美午夜| 成人性生交大片免费观看嘿嘿视频| 97精品国产97久久久久久免费| 欧美日韩成人在线播放| 亚洲一区二区三区香蕉| 精品国产一区二区三区久久狼5月| 51精品在线观看| 91麻豆国产语对白在线观看| 国产伦精品一区二区三区精品视频| 亚洲国产成人精品久久| 欧美日韩国产精品| 亚洲美女av网站| 欧美肥臀大乳一区二区免费视频| 国产精品免费视频久久久| 国产中文欧美精品| 欧美一级bbbbb性bbbb喷潮片| 亚洲国产福利在线| 亚洲精品电影在线观看| 亚洲美女福利视频网站| 欧美国产日韩二区| 亚洲一区二区精品| 亚洲最大av在线| 欧美精品福利在线| 欧美日韩一区二区免费在线观看| 欧美日韩精品在线观看| 亚洲欧美日韩一区在线| 国产精品久久久久久久久久小说| 亚洲乱码av中文一区二区| www.亚洲一二| 色婷婷久久av| 亚洲已满18点击进入在线看片| 国产欧美日韩中文字幕在线| 亚洲另类欧美自拍| 91久久精品美女高潮| 国产精品99导航| 成人国产精品一区|