成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

php如何實現(xiàn)ios推送

php實現(xiàn)ios推送的方法:首先把要發(fā)送的消息以及iPhone標識打包,并發(fā)給APNS;然后查找有相應標識的iPhone,并把消息發(fā)送到iPhone;最后把發(fā)來的消息傳遞給相應的應用程序,并且按照設定彈出Push通知即可。

php如何實現(xiàn)ios推送

推薦:《PHP視頻教程》

IOS推送消息是許多IOS應用都具備的功能,最近也在研究這個功能,參考了很多資料終于搞定了,下面就把步驟拿出來分享下:

iOS消息推送的工作機制可以簡單的用下圖來概括:

php如何實現(xiàn)ios推送

Provider是指某個iPhone軟件的Push服務器,APNS是Apple Push Notification Service的縮寫,是蘋果的服務器。

上圖可以分為三個階段:

第一階段:應用程序把要發(fā)送的消息、目的iPhone的標識打包,發(fā)給APNS。

第二階段:APNS在自身的已注冊Push服務的iPhone列表中,查找有相應標識的iPhone,并把消息發(fā)送到iPhone。

第三階段:iPhone把發(fā)來的消息傳遞給相應的應用程序,并且按照設定彈出Push通知。

php如何實現(xiàn)ios推送

從上圖我們可以看到:

1、應用程序注冊消息推送。

2、iOS從APNS Server獲取device token,應用程序接收device token。

3、應用程序?qū)evice token發(fā)送給PUSH服務端程序。

4、服務端程序向APNS服務發(fā)送消息。

5、APNS服務將消息發(fā)送給iPhone應用程序。

無論是iPhone客戶端和APNS,還是Provider和APNS,都需要通過證書進行連接。

下面我介紹一下幾種用到的證書。

一、CSR文件

1、生成Certificate Signing Request(CSR)

php如何實現(xiàn)ios推送

2、填寫你的郵箱和常用名稱,并選擇保存到硬盤。

php如何實現(xiàn)ios推送

點擊繼續(xù):

php如何實現(xiàn)ios推送

這樣就在本地生成了一個Push.certSigningRequest文件。

二、p12文件

1、導出密鑰。

php如何實現(xiàn)ios推送

php如何實現(xiàn)ios推送

2、輸入你的密碼。

php如何實現(xiàn)ios推送

這樣就生成了一個Push.p12文件。

三、SSL certificate文件

1、用你付過費的帳號登錄到iOS Provisioning Portal,并新建一個App ID,這個過程可以參考:iOS應用的真機調(diào)試,這樣就會生成下面這條記錄:

php如何實現(xiàn)ios推送

2、點擊右側的Configure:

php如何實現(xiàn)ios推送

3、點擊Development Push SSL Certificate一行后的Configure:

php如何實現(xiàn)ios推送

4、點擊Continue:

php如何實現(xiàn)ios推送

5、選擇前面生成好的Push.certSigningRequest文件,點擊Generate,出現(xiàn)如下所示的頁面:

php如何實現(xiàn)ios推送

6、點擊Continue:

php如何實現(xiàn)ios推送

7、點擊Download,并將文件命名為aps_developer_identity.cer。

8、點擊Done,你會發(fā)現(xiàn)狀態(tài)變成了Enabled:

php如何實現(xiàn)ios推送

到現(xiàn)在為止,我們已經(jīng)生成了三個文件:

1、Push.certSigningRequest

2、Push.p12

3、aps_developer_identity.cer

雙擊aps_developer_dientity.cer 注冊到你的鑰匙串中,這樣你的鑰匙串中就會有

php如何實現(xiàn)ios推送

二、準備profile證書,因為推送消息只能再真機上測試,所以要建一個profile證書

php如何實現(xiàn)ios推送
點擊"new profile"為上面新建的APP ID建個profile ,成功之后下載*_Dev_Profile.mobileprovision

雙擊將其加入到xcode 的Provisioning Profiles 中,這里有一點要注意,再將這個加入xcode之前如果之前已經(jīng)加入過一定要把之前加入的刪掉,如果有多個的話會出錯。

三、工程代碼

到這里證書已經(jīng)準備完畢,接下來,我們在xcode中新建一個測試工程,注意設置工程的Bundle Identifier必須與上面建的APP ID 里的相同

php如何實現(xiàn)ios推送

在didFinishLaunchingWithOptions 中加入一下代碼

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   [self.window makeKeyAndVisible];     [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];     return YES;   }     - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken {     NSLog(@"regisger success:%@", pToken);          //注冊成功,將deviceToken保存到應用服務器數(shù)據(jù)庫中      }   - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{     // 處理推送消息     UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"通知" message:@"我的信息" delegate:selfcancelButtonTitle:@"取消" otherButtonTitles:nil, nil];     [alert show];     [alert release]; NSLog(@"%@", userInfo); } - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {     NSLog(@"Regist fail%@",error);          }

到這里一切順利的話我們就可以在真機運行了,注冊成功我們會得到iphone 的deviceToken,

My token is:

<740f4707 bebcf74f 9b7c25d4 8e335894 5f6aa01d a5ddb387 462c7eaf 61bb78ad>

四、在應用服務器采用php的方式將消息推送給APNS,

1、php連接APNS也是需要證書的,還記得我們上面獲得的幾個證書嗎?打開終端,對上面的證書做如下處理,

cd 進入證書所在目錄

把.cer文件轉換成.pem文件:

$ openssl x509 -in aps_developer_identity.cer -inform der -out PushChatCert.pem

把私鑰Push.p12文件轉換成.pem文件:

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12 Enter Import Password: MAC verified OK Enter PEM pass phrase: Verifying – Enter PEM pass phrase:

你首先需要為.p12文件輸入passphrase密碼短語,這樣OpenSSL可以讀它。然后你需要鍵入一個新的密碼短語來加密PEM文件。還是使用”pushchat”來作為PEM的密碼短語。你需要選擇一些更安全的密碼短語。

注意:如果你沒有鍵入一個PEM passphrase,OpenSSL將不會返回一個錯誤信息,但是產(chǎn)生的.pem文件里面將不會含有私鑰。

最后。把私鑰和證書整合到一個.pem文件里:

$ cat PushChatCert.pem PushChatKey.pem > ck.pem

為了測試證書是否工作,執(zhí)行下面的命令

$ telnet gateway.sandbox.push.apple.com 2195 Trying 17.172.232.226… Connected to gateway.sandbox.push-apple.com.akadns.net. Escape character is ‘^]’.

它將嘗試發(fā)送一個規(guī)則的,不加密的連接到APNS服務。如果你看到上面的反饋,那說明你的MAC能夠到達APNS。按下Ctrl+C 關閉連接。如果得到一個錯誤信息,那么你需要確保你的防火墻允許2195端口。

然后再次連接,這次用我們的SSL證書和私鑰來設置一個安全的連接:

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem Enter pass phrase for PushChatKey.pem:

你會看到一個完整的輸出,讓你明白OpenSSL在后臺做什么。如果連接是成功的,你可以鍵入一些字符。當你按下回車后,服務就會斷開連接。如果在建立連接時有問題,OpenSSL將會給你一個錯誤消息

ck.pem文件就是我們需要得到php連接APNS 的文件,將ck.pem和push.php放入同一目錄上傳到服務器,push.php的代碼如下:

<?php // 這里是我們上面得到的deviceToken,直接復制過來(記得去掉空格) $deviceToken = '740f4707bebcf74f 9b7c25d4 8e3358945f6aa01da5ddb387462c7eaf 61bb78ad'; // Put your private key's passphrase here: $passphrase = 'abc123456'; // Put your alert message here: $message = 'My first push test!'; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); // Open a connection to the APNS server //這個為正是的發(fā)布地址  //$fp = stream_socket_client(“ssl://gateway.push.apple.com:2195“, $err, $errstr, 60, //STREAM_CLIENT_CONNECT, $ctx); //這個是沙盒測試地址,發(fā)布到appstore后記得修改哦 $fp = stream_socket_client( 'ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) exit("Failed to connect: $err $errstr" . PHP_EOL); echo 'Connected to APNS' . PHP_EOL; // Create the payload body $body['aps'] = array( 'alert' => $message, 'sound' => 'default' ); // Encode the payload as JSON $payload = json_encode($body); // Build the binary notification $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n',  strlen($payload)) . $payload; // Send it to the server $result = fwrite($fp, $msg, strlen($msg)); if (!$result) echo 'Message not delivered' . PHP_EOL; else echo 'Message successfully delivered' . PHP_EOL; // Close the connection to the server fclose($fp); ?>

接下來我們訪問http://localhost/push/push.php

iphone就會接收到一條推送消息了,如果有問題的話就檢查上面的操作步驟,特別是加紅的部分

另外去除標記的方法為,在viewDidApper中加入

int badge = [UIApplication sharedApplication].applicationIconBadgeNumber;     if(badge > 0)     {         badge--;         [UIApplication sharedApplication].applicationIconBadgeNumber = badge;     }

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
亚洲精品55夜色66夜色| 亚洲一区二区三区在线网址 | 成人亚洲一区二区三区在线| JZZIJZZIJ亚洲乱熟无码| 成人精品视频一区二区不卡| 国产AV无码专区亚洲AⅤ蜜芽| 国产精品自在拍一区二区不卡| 国内久久婷婷五月综合欲色广啪 | 亚洲高清中文字幕在线看不卡| 亚洲色偷偷综合亚洲AV| 2019NV天堂香蕉在线观看| 被村长狂躁俩小时玉婷视频| 国产成人精品综合久久久| 国精产品 自偷自偷| 久久亚洲中文字幕精品一区| 欧美黑人巨大VIDEOS极品| 色老汉亚洲AV影院天天| 性色AV一区二区三区无码| 野花韩国视频观看免费高清的| 99久久久国产精品免费| 各种少妇正面着BBW撒尿视频| 国内精品自产拍在线观看| 鲁大师在线观看视频在线播放| 欧洲精品VA无码一区二区三区 | 亚洲精品无码MV在线观看网站 | 琪琪777午夜理论片在线观看播| 色窝窝无码一区二区三区| 亚洲AV蜜臀日韩AV无码污网站| 一区二区三区av在线| 暗交小拗女一区二区| 国产精品久久久久久久影院| 久久99国产综合精品| 欧洲美女粗暴牲交免费观看| 无码αv人妻一区二区三区| 亚洲色成人网站www观看入口| A级毛片内射免费视频| 国产精品无码翘臀在线看| 久久精品国产一区二区三| 啪啪男女爱高潮GIF| 午夜三级手机在线电影| 真人无码作爱免费视频| 丰满人妻熟妇乱又伦精品| 久久99久国产麻精品66| 人妻精品久久无码专区涩涩| 亚洲AV无码久久久久久精品同性| 18禁无遮挡无码网站免费| 国产精品99久久久久久宅男 | 好男人电影在线观看| 欧美顶级PPT免费模板网站| 午夜无码伦费影视在线观看果冻| 综合图区亚洲另类偷窥| 国产美女精品视频线免费播放软件| 毛片无码中文字幕| 午夜成人无码福利免费视频| 97人洗澡人人澡人人爽人人模| 国产乱色精品成人免费视频| 男女作爱在线播放免费网站| 洗澡被公强奷30分钟视频| 9色国产深夜内射| 激情欧美成人小说在线视频| 日本精品视频一区二区| 亚洲熟妇AV一区二区三区漫画| 俄罗斯13一14幻交| 久久中文字幕AV一区二区不卡| 无码AV免费一区二区三区四区| 400部精品国偷自产在线| 国产一区二区三区影院| 日本成熟人妻HD| 尤物99国产成人精品视频| 国产情侣露脸高清在线| 人妻av无码一区二区| 亚洲影院丰满少妇中文字幕无码| 国产95在线 | 亚洲| 免费A级毛片无码樱桃视频| 性色AV夜夜嗨AV浪潮牛牛| 暴行JAPANESE人妻| 老师上课没戴奶罩看到奶头| 羞羞漫画AⅤ漫画AV漫画视频 | 在线看片无码永久免费视频| 国产午睡沙发系列大全| 日本乱偷人妻中文字幕在线| 中国女人内谢69XXXX免费视| 国精品99久9在线 | 免费| 日韩精品成人无码专区免费| 中英文字幕乱码英文正常| 精品九九人人做人人爱| 我偷偷跟亲妺作爱H| 拔萝卜电视剧高清免费观看全集| 久久亚洲中文字幕伊人久久大| 亚洲AV福利院在线观看| 从厨房到餐桌JOYCE| 欧美丰满熟妇XXXX性大屁股| 野花AⅤ亚洲高清完整版在线观看| 国产免费一区二区三区在线观看 | 国内精品一线二线三线黄| 手机免费AV片在线观看| WBBBB搡BBBB搡BBBB| 麻豆亚洲AV熟女国产一区二| 亚洲国产美女精品久久久久| 国产精品亚洲АV久久| 色婷婷色综合激情国产日韩| AV中文无码乱人伦在线观看| 麻豆极品JK丝袜自慰喷水久久| 亚洲欧洲闷骚AV少妇影院| 国产综合久久亚洲综合| 无码精品久久久久久人妻中字| 东京热无码人妻一区二区AV | 国产AⅤ无码专区亚洲AV综合网| 强开小娟嫩苞又嫩又紧| 3D动漫同人精品无码专区| 蜜臀av色欲一区二区三区麻豆| 一本一道AV无码中文字幕| 精品麻豆一卡2卡三卡4卡乱码| 亚洲AV成人无码精品| 国产免费无码一区二区视频| 玩弄放荡人妇系列AV在线网站| 当着全班面被C到高潮哭视频 | 最新AV片免费网站入口| 兰州熟妇高潮露脸| 在线播放免费人成毛片乱码| 久久婷婷国产剧情内射白浆| 亚洲中文久久精品无码照片| 久久国产乱子精品免费女| 亚洲欧美日韩综合久久| 精品人妻一区二区三区四区| 亚洲娇小与黑人巨大video| 精品久久久无码人妻中文字幕豆芽| 亚洲成AV不卡无码无码不卡| 狠狠色噜噜狠狠狠8888在| 亚洲AV无码一区二区三区人区 | 国产精品成人片在线观看| 未成满18禁止免费无码网站| 国产妓女牲交A毛片| 无码中文精品视视在线观看| 国产亚洲视频在线观看播放| 亚洲А∨天堂久久精品2021| 精品久久久久久中文字幕无码软件 | 亚洲一区二区三区无码中文字幕 | AAAA级少妇高潮大片在线观看| 欧美午夜性春猛交ⅩXXX| YSL千人千色T9T9T9T9| 日产乱码一二三区别免费观看| 成人一区二区免费中文字幕视频| 色欲AV永久无码精品无码| 国产精品V欧美精品V日韩精品| 小荡货奶真大水真多紧视频| 黑人巨大精品欧美一区二区| 亚洲熟妇AV午夜无码不卡| 妹妹中考前让我C了1次| CHINESE国产老熟女| 日韩人妻无码精品专区| 国产好深好硬好想要免费视频| 午夜阳光精品一区二区三区| 精东传媒剧国产MV的特点| 一本之道无码一区二区| 尿眼BDSM奇特虐| 成人亚洲A片Ⅴ一区二区小说 | 日本人妻丰满熟妇久久久久久 | 无码国产69精品久久久孕妇 | 亚洲色偷偷偷综合网| 女人18片毛片免费| 岛国AV在线无码播放| 小雪好湿用力啊进来轻点| 久久精品A一国产成人免费网站| 中文字幕乱码亚洲无线码| 日本肥老妇色XXXXX日本老妇| 国产精品女同一区二区| 亚洲色欲色欲WWW在线观看| 女人为啥摸几下就让进了| 丰满少妇人妻XXXXX| 亚洲AV无码一区二区三区观看| 狂猛欧美激情性XXXX大豆行情| 把女人弄爽特黄A大片片| 五十路熟妇无码AV在线| 久久人人爽人人爽人人片AV| 啊灬啊灬啊灬快灬深视频无遮掩 | 国产麻豆剧传媒精品国产AV蜜桃 | 亚洲男男GAY 18自慰网站| 男女性色大片免费网站| 大象大象视频WWW在线观看| 亚洲成色WWW成人网站| 内射人妻视频国内| 国产精品国产三级国产专播 | 看娇妻被两朋友共用| 啊灬啊灬啊灬快灬深用力| 亚洲 欧美 偷自乱 图片| 免费源码资源源码站| 国产成人久久精品二区三区| 亚洲综合激情另类专区| 日韩一区二区三区无码人妻视频| 狠狠做深爱婷婷综合一区 | 黑人啊灬啊灬啊灬快灬深| 97人妻碰碰碰久久久久禁片| 偷窥无罪之诱人犯罪| 乱码人妻Av一区二区三区| 夫上司人妻秘书OL中文有码| 亚洲综合小说另类图片五月天| 色欲AV无码一区二区人妻| 久久久久久老熟妇人妻av| 丰满熟妇人妻AV无码区|