2015-02-23 99 views
0

我已經實現了Passbook web服務,並且可以成功推送到APN;但我的Passbook沒有申請最新版本的通行證。 當我向給定設備推送新通知時,設備會獲取該通知,並且Passbook會發送一個請求,請求我的Web服務詢問與該設備關聯的序列號。我的Web服務發送200 HTTP狀態碼的響應,蒙山一個JSON有效載荷類似於:Passbook後沒有請求最新版本

{"lastUpdated":"1424691339", "serialNumbers":["1234567"]} 

設備控制檯顯示以下內容:

Feb 23 11:34:54 My-iPhone passd[162] <Warning>: Generating GET request with URL <http://192.168.1.138:8000/api/v1/devices/297f6e6ed478540ccc05e1962cce41e6/registrations/pass.com.example.coupon?passesUpdatedSince=1424690611> 
Feb 23 11:34:55 My-iPhone passd[162] <Warning>: Get serial #s task (for device 297f6e6ed478540ccc05e1962cce41e6, pass type pass.com.example.coupon, last updated 1424690611; with web service url http://192.168.1.138:8000/api/) got response with code 200 
Feb 23 11:34:55 My-iPhone passd[162] <Warning>: Get serial numbers task completed with update tag 1424691339, serial numbers (
     1234567 
    ) 

我不明白爲什麼存摺不進行並要求最新版本的通行證。相反,它停止在這一點!

有人可以幫忙嗎?

回答

0

解決! Apple文檔說,要求JSON有效負載中的serialNumbers條目必須是一個字符串數組。這不足以使其工作。序列號字符串也必須引用以使設備認爲它們有效。不幸的是,設備控制檯中的轉儲消息對於解決這個問題也沒有幫助,文檔也沒有。我認爲PassKit在傳遞JSON有效負載時將字符串看起來像一個Integer轉換爲NSNumber,而不是NSString

可能是因爲我有其他字符而不是數字,這個問題不會發生。

這是當序列號是數字時JSON有效負載必須看起來的例子,呃!

{"lastUpdated":"1424691339", "serialNumbers":["'1234567'"]}