簡體   English   中英

App Transfer Keychain Loss:用戶注銷的解決方案

[英]App Transfer Keychain Loss: Solutions to users logging out

我將一個應用轉移到一個新的開發者帳戶。 當我從新的開發人員帳戶上傳構建並通過 Testflight 部署它時,我遇到我的用戶從應用程序中注銷。

我認為這是由於鑰匙串丟失,因為Team ID發生了變化。 所以,我聯系了蘋果,他們說沒有辦法在新的開發者帳戶中訪問舊的鑰匙串,但我可以將應用程序轉移回我的舊開發者帳戶。

這對我們來說真的很糟糕,因為我們在設備中有用戶創建的數據會在注銷時丟失。 我們也有匿名用戶,他們甚至無法重新獲得對其帳戶的訪問權限,因為沒有登錄憑據。 這對我們來說是不可接受的,因為我們會丟失用戶數據,但我們還需要將應用程序轉移到新的開發者帳戶......所以我們正在努力尋找可能的解決方案。

可能的解決方案#1

遠非理想:例如,繼續使用舊的開發者帳戶一個月,並顯示一條警報,內容如下:

請保存/備份您的所有數據和注冊(如果您有匿名帳戶),因為所有未保存的數據將在 [今天日期 + 1 個月] 由於遷移而丟失。 帶來不便敬請諒解。

一個月后,我們再次轉移到新的開發者帳戶。 當月沒有看到消息或沒有保存數據的用戶,再見數據……太糟糕了。

可能的解決方案#2

我不確定 Firebase Auth iOS SDK 是否具有執行以下操作的 API:

  1. 再次將應用轉移回舊的開發者帳戶
  2. 從那里上傳一個新版本,將 Firebase Authentication State (例如令牌)暫時保存在一個文件中(我知道它不安全......也許我可以加密它)
  3. 再次將應用轉移回新的開發者帳戶
  4. 上傳一個新版本來檢查該文件是否存在,然后將 Auth State 再次復制到 Firebase Auth SDK 中。 這樣,用戶仍然可以登錄,就好像什么都沒發生一樣。

第二種解決方案有點不安全、復雜且難以測試,但從用戶的角度來看,它會比第一種解決方案更理想(如果一切順利的話)。

所以,特別是我的問題是:

  1. 使用 Firebase Auth 可以解決方案#2 嗎?
  2. 有沒有人對如何解決這個問題有更多想法? 我想傳輸應用程序(通過登錄)是一個常見的用例!

我們目前僅使用匿名和電子郵件/密碼身份驗證方法。

謝謝!

所以,我沒有找到理想的解決方案。

我最終混合了解決方案#1和#2:

  1. 我將應用程序轉移回舊的蘋果帳戶

  2. 我上傳了一個新版本:

     a. extracts keychain data (which has login credentials and other stuff) b. encrypts this data (I used CryptoSwift) c. saves it into a file in the documents directory
  3. 等待 1-2 個月,以便用戶可以打開應用程序來執行遷移的第一部分

  4. 在等待期間,我們發送電子郵件和推送通知,要求用戶備份他們的數據,並說即將進行大規模遷移,借口是我們最近“增長”了很多並且我們正在擴展東西:P

  5. 將應用轉移到新的蘋果賬戶

  6. 我上傳了一個新版本:

     a. checks if the migration file exists (in the documents directory) b. if exists, read the migration file and decrypts data c. puts this data into the keychain (which is empty after app transfer) d. deletes the migration file from the documents directory
  7. 將此遷移代碼保留幾個月,以便人們打開應用程序並執行遷移

  8. 刪除代碼,遷移期結束。

我將日志發送到后端以查看遷移是否成功。 到目前為止,用戶都在正確遷移。

仍然存在用戶可能丟失數據的情況,例如,匿名用戶未執行遷移的第一部分時。 但我想不出更好的解決方案......到目前為止,數據丟失是最小的。 但我們也花了一些時間來把事情做好並進行所有適當的測試。

如果將來有人對此問題有更好的解決方案,請告訴我。! 我很好奇。

我希望答案對某人有所幫助。

我認為蘋果代表錯了。 您的鑰匙串與捆綁 ID 綁定,而不是團隊 ID。

例如,假設您將 SomeApp 從原始應用所有者 OldCo 轉移到 NewCo。 該應用程序包括一個自定義鍵盤、實際的 SomeApp 應用程序和一個應用程序組。 您在 developer.apple.com 上設置了一些標識符:

App ID:
   com.OldCo.SomeApp
   com.OldCo.SomeApp.keyboard
App Group ID:
   com.OldCo.SomeAppGroup

如果您將這些更改為從com.NewCo. ,用戶將丟失他們的 iCloud 數據。 但是,如果您將它們保留為com.OldCo. ,一切都應該很好。 請注意,要在 NewCo 的 developer.apple.com 帳戶中創建這些 ID,OldCo 必須將它們從其帳戶中刪除。 讓 NewCo 擁有帶有 OldCo 的 ID 感覺很奇怪,但生活很奇怪。

如果我遺漏了一些細微差別,即 TeamID 的更改會影響鑰匙串,請告訴我,我會做更多的研究。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM