iOS 遠程推送參考資料及自己遇到的問題

來源:互聯網
上載者:User

很好的參考資料:http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

中文的參考資料: 第一部分 http://www.tairan.com/archives/194    

第二部分:http://www.tairan.com/archives/281 

第三部分:http://www.tairan.com/archives/240

 

比較詳細介紹各種認證設定檔的:http://blog.sina.com.cn/s/blog_7bfb9660010144j6.html

 

bound name 和 APP ID  的關係:http://blog.csdn.net/totogogo/article/details/7377870

 

可能出現的問題及各種點擊調用app的情況:http://blog.csdn.net/totogogo/article/details/7385487

另外還有cocoa上資料:http://www.cocoachina.com/bbs/read.php?tid-98797-keyword-%D4%B6%B3%CC%CD%A8%D6%AA.html

http://www.cocoachina.com/bbs/read.php?tid=102110


csdn上的資料:http://www.csdn.net/article/2012-02-18/311976

http://blog.csdn.net/cleverbobywjb/article/details/40109971


自己遇到的問題

1. error : Error Domain=NSCocoaErrorDomain Code=3000 "未找到應用程式的“aps-environment”的權利字串" UserInfo=0x1187ad0 


程式回調委託

- (void)application:(UIApplication*)application  didFailToRegisterForRemoteNotificationsWithError:(NSError*)error

{

   NSLog(@"獲得令牌失敗: %@", error);

}

返回錯誤:error : Error Domain=NSCocoaErrorDomain Code=3000 "未找到應用程式的“aps-environment”的權利字串" UserInfo=0x1187ad0 

我的出錯的原因是Xcode的Bundle Identifier 與認證的app id不一致

要確保這三個地方一致


如果第一個圖中的Bundle Identifier不能修改,看第二個圖中Bundle Identifier的值,可能是第二個圖中的設定讓第一個圖不能修改的。

我是直接讓這兩個值都和第三個圖中的值一樣。


2.xcode使用不正確的設定檔Provisioning Profile

xcode自動使用帶*的設定檔,這是不允許的。我是指定了要使用的設定檔:


點擊Debug 值的地方,會出現可選的Provisioning Profile:


因為我是Debug版,所以設定Debug的 Provisioning Profile為制定的Provisioning Profile,不使用Automatic.

3.根據上面英文連結到在終端運行

php simplepush.php

出現

Warning: stream_socket_client(): Unable to set private key file `/Users/ensurebit/Desktop/SimplePush/ck.pem' in /Users/ensurebit/Desktop/SimplePush/simplepush.php on line 22

Warning: stream_socket_client(): failed to create an SSL handle in /Users/ensurebit/Desktop/SimplePush/simplepush.php on line 22

Warning: stream_socket_client(): Failed to enable crypto in /Users/ensurebit/Desktop/SimplePush/simplepush.php on line 22

Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /Users/ensurebit/Desktop/SimplePush/simplepush.php on line 22

Failed to connect: 0 


檢查了檔案改修改的3個地方也修改了


<?php

// Put your device token here (without spaces):
$deviceToken = ' 不帶空格的裝置令牌';

// Put your private key's passphrase here:
$passphrase = ' 密碼';

// Put your alert message here:
$message = '推播通知資訊!';

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', ' ck.pem自己的pem');

紅色部分是需要修改成自己的值的。

上網各種差,真是抓耳撓腮。突然發現$passphrase = '密碼';這行的密碼兩個字的單引號不對,是全形符號,然後改為半形符號,運行,成功。鼓掌。

$ php simplepush.php 

Connected to APNS

Message successfully delivered

這樣表示成功。

一會自己的應用程式就收到了遠程推送。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.