2012-12-06 29 views
0

我試圖通過調用-replacePassWithPass:並傳遞與PKPassLibrary中已完全相同的通行證來更新Passbook中的通行證。方法返回NO(替換失敗) - 爲什麼? (順便說一句:我的設備上的控制檯不顯示從iOS的任何日誌)更換Passbook中的通行證是否需要新通行證與舊通行證不同?

-replacePassWithPass:的文檔是不是在這種情況下非常有用:

這將失敗,如果有匹配的標識符和序列號通 不在圖書館中,或者如果該過程未被授權 訪問該通行證。

和:

YES,如果通成功取代;否則不。

我fullfil這兩個要求。

以這種方式替換傳球是不可能的?我是否應該使用-removePass:並嘗試將其與PKAddPassesViewController一起添加?

我的後端不支持更新通行證,所以我不能驗證這裏的所有posibilities(即真正得到更新通過相同的typeID和serialNumber,但不同的內容)。你有什麼經驗?

+1

什麼原因,你需要用完全相同的通行證來替換通行證?看來在這種情況下,你應該單獨離開通行證。 –

回答

1

只要passTypeIdentifier 和一個通等於passTypeIdentifier 和另一個通序號序列號 - 它們是相同通的實例。如果兩次傳球之間的一切都相同 - 他們是一次傳球的一次。

如果你在你的PKPassLibrary通,-replacePassWithPass作品在第一種情況下,-removePass和增加它帶回PKAddPassesViewController在第二個呢。

更新通行證總是替代品。基本上有三項要求必須滿足才能成功替換密碼:

1)passTypeIdentifier和serialNumber必須已經添加到您的PKPassLibrary; 2)pass的新實例必須與舊pass至少有一個不同(passTypeIndentifier和serialNumber必須保持不變);

3)您的應用程序必須擁有此passTypeIdentifier傳遞的權利。