2015-06-17 18 views
10

identifierForVendor là không phải thay đổi về cài đặt lại các ứng dụng:thay đổi identifierForVendor về cài đặt lại

Giá trị trong khách sạn này vẫn được giữ nguyên trong khi ứng dụng (hoặc khác ứng dụng từ các nhà cung cấp cùng) được cài đặt trên thiết bị iOS. Giá trị thay đổi khi người dùng xóa tất cả ứng dụng của nhà cung cấp đó khỏi thiết bị và sau đó khôi phục một hoặc nhiều thiết bị. Giá trị có thể cũng thay đổi khi cài đặt bản dựng thử bằng Xcode hoặc khi cài đặt ứng dụng trên thiết bị sử dụng phân phối đặc biệt. Do đó, nếu ứng dụng của bạn lưu trữ giá trị của thuộc tính này ở bất kỳ đâu, bạn nên duyên dáng xử lý các tình huống trong đó số nhận dạng thay đổi.

https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor

Tuy nhiên, tôi vừa thử nghiệm điều này với một trong những ứng dụng trực tiếp của chúng tôi trên app store. Ngay cả với một số ứng dụng khác của chúng tôi vẫn được cài đặt trên thiết bị, nếu tôi cài đặt lại ứng dụng A UUID được trả lại từ identifierForVendor thay đổi mỗi lần.

Nó không phải như thế này.

Điều này được sử dụng để hoạt động. Nhưng tại một số điểm, UUID dường như đã bắt đầu thay đổi về "cài đặt lại đơn giản" (như đã nêu ở trên). Đây có phải là một lỗi được biết đến? IdentifierForVendor được biết là bị hỏng so với tài liệu ở trên không? Bất kỳ cách giải quyết nào (ngoài việc lưu UUID thành keychain, vì phương thức đó sẽ bị ngắt với đồng bộ hóa iCloud)?

+0

Giữ mã định danhForVendor hoặc UUID tùy chỉnh trong KeyChain. Xem: [Làm thế nào để bảo tồn identifierForVendor trong ios sau khi gỡ cài đặt ứng dụng ios trên thiết bị?] (Http://stackoverflow.com/questions/21878560/how-to-preserve-identifierforvendor-in-ios-after-uninstalling-ios-app- trên thiết bị% 3E) –

+0

Hãy để tôi tự mình trích dẫn "ngoài việc lưu UUID vào keychain, vì phương thức đó bị ngắt với đồng bộ hóa iCloud". Vâng, phương pháp đó có thể hoạt động trong một số trường hợp. Có nghĩa là nó sẽ không hoạt động trong ** tất cả các trường hợp **. – Jonny

+0

Bạn có thể tạo các mục nhập thiết bị cụ thể cho keychain (lưu ý: Tôi đã nhớ lại điều này từ video WWDC và đã tìm kiếm tài nguyên - tôi chưa tự mình kiểm tra điều này một cách rõ ràng). https://www.andyibanez.com/using-ios-keychain/ và https://developer.apple.com/library/ios/documentation/Security/Reference/keychainservices/index.html#//apple_ref/doc/constant_group/Keychain_Item_Accessibility_Constants –

Trả lời

8

Đó là lỗi đã biết. Có vẻ như Apple đã cập nhật AppStore để tạo ra hành vi mới này cho identifierForVendor vào khoảng ngày 28 tháng 5. Nếu bạn tìm kiếm trong diễn đàn Nhà phát triển ứng dụng, có các nhà phát triển khác báo cáo cùng một vấn đề.

Chữ ký gc của Apple đã trả lời về vấn đề với câu trả lời sau: "Hãy báo cáo lỗi về vấn đề này tại https://developer.apple.com/bug-reporting>. Chúng tôi không biết vấn đề này đang được giải quyết. "

+0

Tôi tìm thấy/một chủ đề trong diễn đàn mới. Có vẻ như đó là một vấn đề đã biết như bạn nói. – Jonny

0

Chúng tôi sắp gửi lại bằng quyền sử dụng Nhóm ứng dụng để cung cấp cho chúng tôi NSUserDefaults được chia sẻ. Có vẻ như App Group NSUserDefaults (không giống như nhóm truy cập keychain và iCloud key-value storage) được chia sẻ trên thiết bị, nhưng không phải trên tài khoản iCloud. Nếu khóa NSIDerDefault "deviceid" được chia sẻ không tồn tại, chúng tôi sẽ lưu ID IdentifierForVendor và sau đó sử dụng nó cho tất cả các ứng dụng của chúng tôi sau khi đã lưu.

Các vấn đề liên quan