你好,我是iPhone的新手。Adhoc發佈推送通知問題
我正在使用開發環境成功接收推送通知的Iphone應用程序,但未在adhoc分發中收到通知。
我有兩個證書,即開發&生產。
誰能告訴我我錯過了什麼?
你好,我是iPhone的新手。Adhoc發佈推送通知問題
我正在使用開發環境成功接收推送通知的Iphone應用程序,但未在adhoc分發中收到通知。
我有兩個證書,即開發&生產。
誰能告訴我我錯過了什麼?
正如我昨天張貼的回答同樣的問題:(prev. answer)
我有類似的問題。做一些測試後,我得出了以下結論:
如果應用程序(即與development provision profile
編譯)安裝比這樣的設備有development token
,你應該使用development certificate
發送推到這樣的設備。
如果應用程序(即用distribution provision profile
編譯)安裝比這樣的設備有production token
,你應該使用production certificate
發送推到這樣的設備。
而且,如果您的應用尚未發佈,我認爲APNS
不會接受production certificate
,那麼可能是你將無法發送推送到您的ad-hoc應用。
你可以做什麼?例如,發送應用程序給你的測試人員,編譯development certificate
。
更新: 我學會了這個問題,一個更多的時間,發現了一些有趣的信息:
Ad-hoc provision profile
。<key>aps-environment</key> <string>production</string>
aps-environment
。是否等於production?
如果是,那麼您應該發送到production certificate
的臨時應用推送通知。
如果該值爲development
那麼您應該發送到您的特設應用推送通知development certificate
。
Production Push SSL Certificate
。如果這沒有幫助你,那麼嘗試更新你的專用配置文件。
推送通知有時會令人頭疼,並且由許多元素組成。如果你錯過了某些事情,你的PNS將無法正常工作,並且很難理解爲什麼。根據經驗法則,查看以下清單:
- 使用正確的App ID(配置配置文件附加到的同一個ID)正確生成推送證書和私鑰。
- 證書和私鑰都來自同一個下載的PNS證書。
- 兩個文件都正確連接到一個.pem文件中。
- 應用程序處於活動狀態時,您的應用程序會在推送通知進入時處理這些通知。
在任何情況下,我建議遵循一個很好的教程,如這樣:http://mobiforge.com/developing/story/programming-apple-push-notification-services wordfor word。祝你好運!
感謝教程,我遵循了所有的步驟。我不需要.pem文件,因爲我使用只需要證書的'pushmebaby'應用程序。 –
據我所知,你不能發送通知到具有開發證書的Ad Hoc構建。正如你可以想象這種情況是好的,直到你發佈的應用程序。一旦應用程序發佈發送通知到包含製作的特設版本,Cert也會將它們發送給您的應用程序持有者。我得到的方式是:
現在你將有一個應用程序,你可以構建專門測試通知。不是一個優雅的解決方案,但它工作
不知道爲什麼這是downvoted,創建一個單獨的捆綁是一個合法的機制與平臺,如HockeyApp的beta測試。 – Leon
我遇到了同樣的事情,花了相當一段時間試圖找出答案。我生成了一個新的生產證書,創建了Ad-Hoc供應配置文件(這樣我就可以通過生產中的推送通知進行測試),而且根本沒有任何工作。
我相應地固定了推送腳本(服務器端)(使用新生成的.pem文件並連接到ssl://gateway.push.apple.com:2195)。該腳本告訴我,通知已交付,但我的設備實際上並沒有得到它。
原來這個問題真的很無聊!顯然,當使用新證書(或通過Ad-Hoc)使用應用程序時,設備令牌會發生變化。我只能推測他們爲什麼改變的原因,但我所知道的是,一旦我抓住正確的標記並使用我的測試腳本向設備發送通知,我就知道了!
+1。我還必須使用ssl://gateway.push.apple.com:2195(需要刪除沙箱),並且必須使用設備令牌來獲取生產證書。 – Geek
我剛剛克服了一個非常類似的問題,事實證明這可能應該是顯而易見的,但我會在這裏發佈它,以防萬一其他人與我一樣愚蠢。
我正在使用MoonAPNS
,可能會收到開發通知但不能生產。 後的兜兜轉轉好幾天我回到這一行:
PushNotification push = new PushNotification(true, p12file, p12password);
以前有忽視true
參數,通過服務器代碼調試顯示這是設定是否使用沙盒服務器 - d」哦!切換到false
,一切都很好。
道德故事:不要忘記在非沙盒服務器上指出您的通知!
除了從Nekto猜測...
而且,如果您的應用尚未發佈,我認爲APNS將不接受生產許可證,所以也許你將無法發送推送到您的專門應用程序。
與此同時,我可以確認即使應用程序尚未發佈,也可以在即席應用程序上接收推送通知。
我得到了同樣的問題,經過大量的睾丸後,我終於得到了什麼問題。
這是因爲蘋果生產apns服務器不允許包含私鑰數據的P12文件。但是,如果包含私鑰,開發apns服務器將接受P12文件。
因此,當您從Keychain導出P12文件時,只需選擇沒有私鑰的生產證書文件,即可在您的adhoc應用程序中獲得通知(即使未發佈)。
在測試推送到開發環境時,應該記住一個嚴格的清單。他們中的大多數已經在上面提到。但這是解決我的問題的一件事,我想分享一下。我希望它能幫助別人。也就是:
請注意設備令牌ID,這是不同的開發& &生產環境。
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *deviceTokenStr = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
UIAlertView *alert= [[UIAlertView alloc]initWithTitle:deviceTokenStr message:Nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
答案2016年10月13日
我有類似的問題後,我改變鍵下面的教程: https://support.magplus.com/hc/en-us/articles/203808718-iOS-Creating-a-Push-Notification-Certificate
但還是不能工作 後,我檢查服務器的代碼,發現
該ssl:ssl://gateway.sandbox.push.apple.com:2195
必須更改爲ssl://gateway.push.apple.com:2195
變化,我可以收到通知
我覺得你不符合我所說清楚後,它爲發展概況,但不是即興distribution.I也是用'pushmebaby'應用產生notification.Thanks –
我清楚地理解你。閱讀我的第二點:2.如果您的應用程序未在AppStore中發佈,我不確定您是否可以使用生產證書。 – Nekto
我也測試了開發證書和adhoc ditribution配置文件,但它仍然沒有顯示任何東西。 –