2011-04-18 66 views
7

在Keychain服務編程指南:它規定了以下內容:如何在通過AppStore更新後測試對鑰匙串屬性的訪問?

「在iPhone上,鑰匙扣權利取決於用於應用程序簽名的供應配置文件一定要堅持使用在不同版本的應用程序相同的供應配置文件。 「

我沒有問題,但是我想測試一下,如果我在AppStore中提供了更新,以便它仍然能夠訪問存儲在鑰匙串中的舊值。我試圖通過更新應用程序來測試該應用程序的版本,該版本包含與原始版本相同的套件ID和產品名稱,但無法訪問鑰匙串中的舊值。

是將更新提交到AppStore並希望它可以工作的唯一選擇?

回答

-1

除非我誤會,否則要更新應用商店中的應用,您需要使用相同的配置文件。因此,由於您將使用相同的配置文件,因此您應該可以訪問相同的鑰匙串項目。

0

它實際上不是重要的配置文件,而是應用程序ID。特別是您在創建App ID時設置的Bundle Seed ID。鑰匙串訪問受其控制。所以只要您的個人資料使用具有相同捆綁種子ID的應用ID,您就可以繼續訪問鑰匙串中的信息。我有幾個應用程序可以做到這一點。

這允許您創建一套應用程序,只要您將它們設置爲使用相同的捆綁種子ID,就可以訪問相同的鑰匙串項目。所以如果你做了一個輕量級和專業版,他們都可以訪問相同的鑰匙串信息,同時爲用戶默認設置維護獨立的包標識。

+0

如何設置您的應用程序使用與以前版本相同的應用程序ID。我已經嘗試了GenericKeychain示例代碼中提到的技術,但由於以前的版本沒有使用訪問組安全屬性,所以它似乎沒有工作。我仍然無法訪問從應用商店安裝的應用程序中的鑰匙串中設置的密碼。 – 2011-04-20 01:14:31

+0

我也嘗試將Entitlements.plist中的應用程序標識符鍵設置爲##########。com.companyname.etc,但似乎沒有幫助。 – 2011-04-20 01:16:09

+1

此答案直接與[apple's docs](http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html)相沖突:*在iPhone上,Keychain權利取決於配置個人資料用於簽署您的申請。確保在不同版本的應用程序中始終如一地使用相同的配置文件。*哪一個是正確的,配置文件或應用程序ID? – 2012-11-09 17:27:09

2

這是一個很好的問題。

您可能想要在鑰匙串中存儲一些數據的主要原因之一是爲了防止惡意用戶訪問它。這是一個相當乾燥的句子,所以我建議您閱讀about how someone might access that data

訪問鑰匙串數據的另一種方式是創建一個具有與目標應用程序相同的應用程序ID的惡意應用程序。蘋果已經通過要求配置文件相同來確保這條路線。


因此,要回答你的問題,你只能從同一個供應簡介更新測試鑰匙串數據,即

  1. 特設爲Ad hoc
  2. 應用程序商店應用程序商店。

應用程序商店到應用程序商店並不是一個真正的選擇,因爲到時候已經太晚了(您的更新將在市場上銷售)。因此,您需要刪除您的應用商店應用並安裝特別版本。然後在鑰匙串上重新創建數據,然後更新到最新的特設版本並測試其工作。

當然,這需要你有一個存檔的應用程序當前在應用程序商店的臨時版本。如果你沒有這個,那麼它不可能測試更新。