2017-03-08 19 views
0

我正在開發一個使用推送通知的應用程序。當在開發設備上進行測試時(例如使用連接到Mac的電纜進行安裝),它可以正確接收推送通知。但是當它使用臨時手段安裝時,不會收到推送通知。如果推送通知可以在開發設備上成功發送,爲什麼安裝ad-hoc時應用程序無法收到推送通知?

但是,應用程序可以在開發和臨時場景中都獲得設備ID。這通過在服務器上接收並記錄的設備ID來證明。服務器在開發和臨時方案中均接收設備ID。但即使如此,如果應用程序是使用臨時手段安裝的,它不會收到來自服務器的任何推送通知。

PS:

  • 我使用的Xcode 8.2.1和斯威夫特3.
  • 我一直在使用SSL推送通知的分佈和發展創建的證書,並已列入(雙擊)證書在Xcode上。
  • 我確保推送通知功能處於開啓狀態。推送通知的兩個步驟也有滴答。
  • 我使用Xcode自動存檔應用程序自動管理登錄。Xcode應該爲我鏈接所有正確的證書,包括用於分發和開發的SSL推送通知證書......對嗎?

你對這個問題有什麼想法,並解決這個問題?謝謝。

編輯:

當我試圖用手工代碼簽名,這裏就是我的了:

enter image description here

我解決不了的地位問題。我知道調試應該有不同的配置。但現在,這不是主要問題。如果我可以解決狀態問題,我也可以解決不同的配置文件。

+0

您是否試圖通過選擇正確的證書和供應手動存檔應用程序? –

+0

@HuseinBehboodiRad我無法手動存檔應用程序,因爲顯然Xcode 8比Xcode 7更加繁瑣。在Xcode 8中工作的一些舊步驟不適用於Xcode 8.例如,當我選擇我的配置文件時,它會一直說''Provisioning profile 不包括簽名證書「​​iPhone Distribution:''。這在Xcode 7中不會發生,我不知道如何解決這個問題。現在我使用Xcode自動生成的配置文件(XC iOS Adhoc )手動創建存檔文件。祝我好運 –

+0

@HuseinBehboodiRad即使使用Xcode自動生成的配置文件,它仍然無法正常工作 –

回答

1

您需要確保adhoc環境中推送通知的證書是否正確創建。其次,UDID正確保存在服務器上或不保存。

+0

「確保adhoc證書創建正常「 - >如何確保?如何發現它沒有被正確創建?但是,「UDID正確地保存在服務器上」 - >我可以確保它正確保存。 –

+0

當您從服務器傳遞UDID時,它會爲您提供日誌,您是否可以共享該日誌。從這一點,你將會了解你的證書。 –

0

首先,您應該在bash中運行命令security cms -D -i yourprovisionname.mobileprovision來檢查您在ipa中的移動設備的uuid是否正確。

後線
<關鍵> UUID < /鍵>
<串> XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX < /串>

您可以解壓縮你的.ipa文件並在您的Payload/App中找到embedded.mobileprovision

如果mo bileprovision是正確的,你應該檢查你的認證。

請注意生產環境的認證與沙箱不同。

檢查完認證後,您可以檢查服務器端。當我們推到一個沙箱(開發)時,我們推動到gateway.sandbox.push.apple.com,並在分佈式環境中,我們推到gateway.push.apple.com(沒有沙箱)。