0

當我啓動應用程序時,它會註冊推送通知,並根據供應配置文件生成不同的推送令牌。區分蘋果推送通知的分發和開發

由於AdHoc和AppStore供應配置文件連接到同一臺服務器,我必須以某種方式區分它是什麼類型的令牌,以便服務器可以連接到正確的Apple服務器。 (沙箱/生產)

怎麼能實現呢?

回答

1

我相信實現這一目標的最佳方法是在將令牌發送到服務器時使開發/生產區別開來,並讓服務器在數據庫中註釋令牌的類型。

當然你有一些API調用你的服務器傳遞令牌。在那個調用中,也傳入令牌的類型。例如:

{ "token" : "abcd....", "type" : "development" } 

實際上使在構建時的區別,你可以使用預處理指令,以檢測它是否是一個調試版本,發佈版本,或App Store的構建。

檢查是否啓用調試很容易,但要區分是AdHoc還是App Store,請考慮創建用戶定義的變量。爲此,請克隆Release方案並創建一個名爲App Store的方案。然後在您的Build Settings中,轉到用戶定義的變量並創建一個名爲APP_STORE,但僅限於App Store方案。當您發佈到商店時,確保您在存檔時使用該方案進行生成,而不是使用Release

然後,檢查類型傳遞到您的API是這樣做很容易:

NSString *type = nil; 
#ifdef DEBUG 
    type = @"debug"; 
#elseif APP_STORE 
    type = @"app_store"; 
#else 
    type = @"release"; 
#endif 
+0

是的,這就是我們正在做的,現在,即使對於這兩種模式不同的服務器。但不知何故分發蘋果服務返回「無效的令牌」,所以我想編程方式檢查開發/分配標誌,並將其發送到服務器只是爲了確保。 – sigma

+0

你能分享你的IFDEF嗎?提出的建議應該起作用。 – Dan

+0

經過大量測試後,我們發現配置文件「無效」(會員中心的黃色標誌)。重新創建後,一切都很順利。生成APN令牌,服務器能夠發送推送等。對不起,混淆和thx! – sigma