2011-11-08 76 views
3

首先讓我說,我一直在尋找一個解決方案,現在幾個小時。我已經讀過幾乎所有關於這個問題的SO問題,並且沒有任何解決方案能夠工作我還閱讀了關於這個主題的官方蘋果文檔以及其他一些教程。基本上我說這是爲了避免這樣的明顯建議(確保它不是「沙箱」等)。iOS推送通知在開發工作但不生產

我在開通門戶中同時爲我的應用程序推送和推送通知證書。我已經按照步驟使用蘋果自己的文檔創建了一個pem文件dev和prod。

我有與此應用程序綁定的開發人員和臨時分發供應配置文件。

我可以使用dev配置文件直接從xcode構建應用程序到設備,或者使用ad hoc分發配置文件(然後使用beta生成器安裝到設備上)對其進行歸檔。

無論我使用開發人員配置文件直接構建還是使用ad hoc配置文件(通過測試版構建器),推送通知在使用sandbox + dev pem文件時都可以工作。但只要我使用prod服務器+ prod pem文件進行測試,則不會發送推送通知。

我有兩個用於測試的php腳本,一個用於開發,一個用於產品。除了服務器url(沙箱vs不是沙箱)和引用的pem文件(dev或prod)之外,它們基本相同。

我覺得很奇怪,即使使用ad hoc構建,我仍然可以使用沙盒和dev pem發送推送通知,這是正常的嗎?

從開發到產品時,我還應該做些什麼嗎?我覺得現在我已經嘗試了一切。我多次重新生成證書和配置文件。我遵循幾乎完全相同的程序來生成dev和prod pem文件,我的php腳本和幾乎相同(用於prod和dev)。

我不知道這是服務器問題還是客戶端(應用程序)問題?有什麼地方我可能會忘記嗎?

我希望有人能對此有所瞭解,因爲它開始讓我瘋狂!

乾杯。

回答

11

嗯,我發現了這個問題,這是我最後的一個愚蠢的錯誤。如果其他人犯了同樣的錯誤,我會在這裏分享。

我不知道的關鍵是設備令牌對於dev和prod(對於相同的設備)是不同的。我正在使用我在dev中測試的設備令牌在prod中進行測試。這在dev中工作正常,但是當我切換到prod時,我在php腳本中保存了相同的設備標記(錯誤地假設設備標記對於同一設備是相同的),但在prod中註冊的實際設備標記爲不同。

實際上,這不會發生設備令牌發送到服務器,但是當我測試時,我使用硬編碼的設備令牌,因爲我不想涉及服務器。

希望這可以節省一些人一些挫折。

+0

我現在正在爲此付出努力。我進入了一個項目,推動Notifs在Dev工作,但現在我已經在AppStore上批准了應用程序,他們不再工作了。 AppID是否對全世界的每個用戶都是一樣的?或者它是由您的手機產生的並且與您的設備具體匹配? –

0

類似的問題發生在我身上,我將推送通知添加到現有的應用程序,通過使用Xcode運行到我的設備進行測試,它運行良好,但是當創建存檔並通過iTunes安裝時,它沒有收到推送通知。 問題是,當我添加推送通知的權限時,我的配置文件已過時(無效),所以我不得不生成新的配置文件,適用於我的iTunes /電話,現在,當我安裝該應用程序時,它工作良好。

相關問題