2010-02-23 119 views
4

我們使用開發認證和gateway.sandbox.push.apple.com向通知設置發送通知沒有任何問題。但現在現在我們的應用程序已經在商店中了,即使我們使用創建證書的機器,我們甚至無法連接到生產apn服務器(gateway.push.apple.com)來發送推送第一個地方。無法連接到生產Apple推送通知服務器

我們已經通過PushMeBaby運行了它,它看起來像到gateway.push.apple.com的連接正在被拒絕。當它執行握手(SSLHandshake(context))時,結果是錯誤代碼-9044或errSSLConnectionRefused - 對等體在響應之前斷開連接。

我對ssl和加密有足夠的瞭解,知道我不知道某件事情,但我非常肯定問題是(或開始於)我們的生產SSL證書。推送通知在iPhone門戶中啓用生產(我們有綠燈)。證書已安裝在運行PushMeBaby的計算機上,我在鑰匙串中看到證書和簽名密鑰。當我導出開發推送證書並在PushMeBaby中使用它時,我能夠連接(併發送推送)沒有問題。但隨着生產證書,我們無處可去。我們一再撤消並在兩臺獨立的計算機上重新創建了開發證書和產品證書,所以如果這是人爲錯誤,我們會一再重複。

有一點可能是一個因素,我的鑰匙串上有「團隊代理」鍵,但我不是她。我可以並且沒有任何問題地將二進制文件提交給App Store。

另外,創建生產證書後,我們還沒有設置配置文件。我不確定這是否是一個因素,但我不明白它是如何用於店內應用的。

我當然希望有人有一些想法,因爲我離開他們!

回答

4

是的,我已經解決了這個錯誤。 我失去了幾天找到解決方案。

的問題是在該行:

result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30); 

NSLog(@"SSLSetPeerDomainName(): %d", result); 

您必須將端口更改爲30號這解決了這個問題。

+0

使用PushMeBaby發送到製作APNs URL(gateway.push.apple。com)我被迫完全評論這條線。所以我更改了URL,取代了證書,並且註釋掉了這一行。然後它爲我工作。 – brentlightsey 2010-12-22 13:37:15

+6

這裏,30實際上是字符串「gateway.sandbox.push.apple.com」的長度。因此,當你將它改爲「gateway.push.apple.com」時,你必須將該數字改爲22.因此它將是:result = SSLSetPeerDomainName(context,「gateway.push.apple.com」,22); – 2011-03-30 11:12:42

+0

非常感謝@ChintanPatel。爲我們節省了很多時間:) – 2013-03-07 04:24:33

15

作爲文檔表示存在2個證書和2個的IP地址爲推送通知:

  • 沙盒:gateway.sandbox.push.apple.com,端口2195(用於開發)
  • 製作:gateway.push.apple.com,端口2195.(用於發佈)

您總是使用網關進行開發。嘗試使用其他網關(用於生產)。

欲瞭解更多信息,請瀏覽:Provisioning and Development

+0

感謝您的回覆。我們僅在生產證書中使用gateway.push.apple.com - 這是連接停止的地方。當我們使用gateway.sandbox.push.apple.com和開發證書時,它工作正常。我們一直非常小心,不要混淆兩者。 – Andrew 2010-02-23 16:58:44

+0

非常感謝... – 2015-06-25 11:28:13

1

在我們的測試中發生了類似的問題,因爲我們試圖使用開發人員設備令牌而不是生產版本。

+0

我們已經意識到了這個問題,因爲我們在另一個項目中遇到了它。我確定這是推送通知開發人員的常見問題,但在這種情況下,它與此無關。作爲其他開發人員的建議,最好從開發產品測試中涉及的所有設備收集令牌,並定期掃描您的生產數據庫。 – Andrew 2011-03-27 04:29:28

相關問題