Trong ứng dụng của tôi, người dùng mua vật tư tiêu hao, giả sử vali được lưu trữ trong Dữ liệu chính. Khi người dùng cài đặt ứng dụng lần đầu tiên, tôi cung cấp cho họ một người dùng miễn phí để bắt đầu. Ứng dụng không thể hoạt động nếu không có ít nhất một vali được thiết lập.iCloud giúp người dùng "ăn cắp" Hàng tiêu dùng trong ứng dụng
Nhưng nếu người dùng cài đặt ứng dụng trên iPhone của họ và sau đó là iPad của họ và đồng bộ hóa cả hai, giờ đây họ có 2 va li. Và nếu họ gỡ cài đặt ứng dụng trên một trong hai thiết bị, sau đó cài đặt lại và đồng bộ hóa ứng dụng, họ vừa mới nhận được thêm một thiết bị và họ có thể thực hiện điều đó vô thời hạn.
tôi có thể thấy hai giải pháp, nhưng không ai trong số họ có vẻ đúng:
Thêm một giá trị để NSUbiquityKeyValueStore khi người dùng đồng bộ đầu tiên với iCloud. Kiểm tra giá trị này khi khởi chạy lần đầu tiên. Nếu không, hãy tạo freebie, nếu không, hãy đồng bộ dữ liệu. Nhưng điều này tạo ra một vấn đề. Điều gì sẽ xảy ra nếu người dùng tắt iCloud hoặc không có kết nối internet khi khởi chạy lần đầu tiên. Các ứng dụng sẽ tạo ra các freebie, sau đó khi iCloud có sẵn, đồng bộ hóa các bản sao, và họ có thể làm điều này nhiều lần như họ muốn.
Cách nào đó khớp với các mục mặc định trên mỗi ứng dụng. Tôi đã có ý tưởng phù hợp với objectID hoặc dấu thời gian, nhưng chúng sẽ khác nhau và tôi không chắc chắn làm thế nào để xử lý nó.
Có ai biết điều gì tôi có thể làm được không?
EDIT:
Sử dụng một cơ sở dữ liệu đóng gói sẵn cộng với migratePersistentStore: tourl: tùy chọn: withType: Lỗi: có vẻ là con đường để đi. Sẽ đăng một câu trả lời với mã nếu nó làm việc cho tôi.
Có lẽ ví dụ của bạn chỉ là khó hiểu, nhưng tại sao không chỉ không bao giờ cung cấp cho họ một chiếc vali miễn phí nếu họ đã có một? Bạn nói rằng ứng dụng sẽ không hoạt động nếu không có va li. Bạn có nghĩa là nó sẽ hoạt động nếu họ đã có một va li trước đó và tiêu thụ nó? –
@chrispix Xin lỗi làm cho ví dụ trở nên trừu tượng. Về cơ bản, bạn không "tiêu thụ" vali, bạn mua bao nhiêu tùy thích và bạn tích lũy chúng. Đó là một mô hình "có thể tiêu thụ" vì nó không giới hạn, nhưng mặt hàng đó không thực sự "tiêu thụ" khi mua, mà tôi đoán là sự khác biệt chính. – ntesler
Tôi nghĩ tôi thấy. Vì vậy, người dùng cài đặt lại, không có va li, bạn cung cấp cho họ một. Sau đó, họ nhập một số thông tin cho phép họ kéo vali trước đó từ máy chủ của bạn? –