国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS實現消息推送及原理分析

iOS實現消息推送及原理分析

2021-01-23 16:46luyangMVP IOS

這篇文章主要為大家詳細介紹了iOS實現消息推送,及針對消息推送原理進行分析,感興趣的小伙伴們可以參考一下

一、消息推送原理:

在實現消息推送之前先提及幾個于推送相關概念,如下圖1-1:

iOS實現消息推送及原理分析

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].

 iOS實現消息推送及原理分析

二、消息推送實現:

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

[macbook-應用程序-實用工具-鑰匙串訪問-證書助手-從證書機構求證書-證書信息(用戶電子郵箱地址{填寫您的郵箱,如:your@email.com},常用名稱{任意,如:pushdemo},請求是:{單選,選擇‘存儲到磁盤'})-繼續-保存],這時會在您指定的地方生成你指定的文件,默認為certificatesigningrequest.certsigningrequest文件,這里命名為:pushdemo.certsigningrequest.在此*.certsigningrequest已經生成,具體操作步驟如圖所示。

iOS實現消息推送及原理分析

iOS實現消息推送及原理分析

如果生成成功,則會在[鑰匙串訪問|登錄|密鑰]欄目中列出與*.certsigningrequest關聯的密鑰,這里是pushdemo,如圖所示:

iOS實現消息推送及原理分析

2、新建一個app id(在蘋果開發者賬號中配置)

(1) 登錄ios dev center,登錄成功后,點擊(ios provisioning portal對應鏈接),如圖所示:

iOS實現消息推送及原理分析

(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}),如下圖所示:

iOS實現消息推送及原理分析

這樣就會生成下面這條記錄,如圖所示:

iOS實現消息推送及原理分析

(3) 配置上一步中生成的app id,讓其支持消息推送[點擊2-6中的configureà選中enable for apple push notification serviceà點擊configure],如圖所示:

iOS實現消息推送及原理分析

 (4) generate a certificate signing request(生成部署請求認證)[點擊2-7中的2configureàcontinueà步驟1生成的*certsigningrequest文件(這里是ishop. certsigningrequest)-generate-生成完成后將其下載下來,命名為:aps_developer.cer],雙擊aps_developer.cer證書{將證書與密鑰關聯,并將證書導入到macbook中},如下圖所示:

iOS實現消息推送及原理分析

(5) 創建development provisioning profiles[開發許可配置文件](provisioning| development|new profile),具體操作流程如下圖所示:

iOS實現消息推送及原理分析

點擊圖中submit,生成development provisioning profiles[開發許可配置文件],這里是:ishopdevprofile.mobileprovision如下圖所示:

iOS實現消息推送及原理分析

下載此開發許可證書(用于聯機調試)。

總結,到現在為止,我們已經生成: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.m file的"didfinishlaunchingwithoptions" method里,添加下列代碼 (用于為app register push notification feature):
// let the device know we want to receive push notifications  
[[uiapplication sharedapplication] registerforremotenotificationtypes:  
 (uiremotenotificationtypebadge | uiremotenotificationtypesound | uiremotenotificationtypealert)];  

3). 在appdelegate.m file里添加下列2個methods (用來handle register remote notification with device token和register error的events)
- (void)application:(uiapplication*)application didregisterforremotenotificationswithdevicetoken:(nsdata*)devicetoken  
{  
    nslog(@"my token is: %@", devicetoken);  
}  
  
- (void)application:(uiapplication*)application didfailtoregisterforremotenotificationswitherror:(nserror*)error  
{  
    nslog(@"failed to get token, 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"

openssl x509 -in aps_development.cer -inform der -out pushdemocert.pem  

3) 執行下列命令來生成和private key .p12 file對應的pem file "pushdemokey.pem" (注意:執行過程會要求你輸入"pushdemokey.p12"創建時設置的密碼,以及設置"pushdemokey.pem”的密碼)
openssl pkcs12 -nocerts -out pushdemokey.pem -in pushdemokey.p12  

4) 執行下列命令把step 11.2生成的cert pem file和step 11.3生成的key pem file合成為一個pem file  "pushdemock.pem"

cat pushdemocert.pem pushdemokey.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 
telnet gateway.sandbox.push.apple.com 2195  

如果你看到下列輸出,則表示你的電腦可以connect apns. 如果出現error,那么check你的firewall是否允許outgoing connections on port 2195。
trying 17.172.233.65...  
connected to gateway.sandbox.push-apple.com.akadns.net.  
escape character is '^]'.  
press ctrl+c to close the connection.

3)  執行下列命令來測試是否能夠connect apple提供的經加密(需使用2) and 3)生成的2個pem file?。┑腶pns "sandbox“ server for development.

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert pushdemocert.pem -key pushdemokey.pem  

執行過程中會要你輸入pushdemokey.pem生成時設置的密碼。如果connect server成功,就會等待你輸入字串,你可以輸入任意字串,然后回車,就會disconnect server。如果連接不成功,則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). download simplepush php code to your mac machine and then unzip it.
2). 去掉simplepush folder里的pk.pem (它沒用),把step 11.4生成的"pushdemock.pem" copy tosimplepush folder
3). 修改simplepush.php file下面幾行:
// 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。
php simplepush.php  

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
主站蜘蛛池模板: 成人av免费看 | 欧美综合第一页 | 欧美久久久久久久 | 国产在线a | 国产白虎 | 99re视频在线观看 | 91在线中文 | 中文字幕乱码亚洲精品 | 新久久久久久 | 精品国产一区二区三区在线观看 | 久久国产精品99国产精 | 午夜av影院| 狠狠干干 | 亚洲精品片 | 大胆一区 | 免费观看a毛片 | 一区二区久久 | 国产一区 | 五月天综合网 | 免费av一区二区三区 | 久久精品国产免费 | 九九综合九九 | 日韩一区中文字幕 | 性视频一区二区 | 亚洲一区二区国产 | 成人在线视频网站 | 国产精品视频一区二区三区不卡 | 久久成人高清 | 久久精品2019中文字幕 | 欧美精品一区二区三区手机在线 | 日日夜夜摸 | 成人h动漫精品一区二区樱花 | 精品一区二区三区中文字幕老牛 | 亚洲精品一| 成人午夜精品久久久久久久蜜臀 | 精品在线一区二区三区 | 欧美精品在线一区二区三区 | 国产精品国产三级国产aⅴ 亚洲精品免费在线观看 | 欧美成年网站 | 日本黄色毛片 | 午夜影院网站 |