2011-10-18 29 views
13

Tôi đã tự hỏi liệu có thể sử dụng iCloud để đồng bộ hóa tệp tùy chọn của ứng dụng giữa các thiết bị hay không. Tệp tùy chọn mà tôi đang nói đến là tệp com.domain.appname.plist được tạo bởi NSUserDafults để lưu trữ các tùy chọn của ứng dụng.Tôi có thể sử dụng iCloud để đồng bộ hóa tệp NSISTerDefaults plist

Tôi muốn có tùy chọn giữ tệp tùy chọn của ứng dụng đồng bộ hóa giữa hai thiết bị khác nhau (ví dụ: iPad và iPhone). Đây có phải là việc sử dụng đồng bộ hóa iCloud có thể chấp nhận được không? Hoặc tôi có cần chuyển đổi tệp plist thành một loại tài liệu khác, lưu trữ nó trên đám mây và chuyển nó trở lại tệp tùy chọn của ứng dụng khi truy xuất nó không?

cảm ơn!

Trả lời

13

Có một thư viện có sẵn để làm điều này với một dòng mã

https://github.com/MugunthKumar/MKiCloudSync

+0

Đó thực sự gần như chính xác những gì tôi đã làm. Tôi đã sử dụng mã đó làm hướng dẫn và sau đó tôi đã lập mã hóa triển khai của riêng mình, yêu cầu người dùng chỉ định rằng họ muốn đồng bộ hóa với iCloud thay vì nó diễn ra một cách minh bạch. Tôi đánh dấu đây là câu trả lời đúng mặc dù vì mã MKiCloudSync đã giúp tôi hiểu những gì tôi cần làm để thực hiện đồng bộ hóa iCloud. – Jackson

+0

Có triển khai nhanh không? – samir105

+1

Swift: https://github.com/ArtSabintsev/Zephyr – jamesk

11

Có thể đồng bộ hóa tùy chọn giữa các thiết bị bằng iCloud. Tuy nhiên, tôi khuyên bạn không nên chia sẻ tệp plist giữa các thiết bị.

NSUbiquitousKeyValueStore phải phù hợp với những gì bạn đang cố gắng làm. Nó rất giống với NSUserDefaults, vì vậy nó rất dễ nhận.

Để sử dụng, chỉ cần bật quyền com.apple.developer.ubiquity-kvstore-identifier trong tệp quyền lợi của bạn và chỉ sao chép các tùy chọn bạn muốn đồng bộ hóa trong kho lưu trữ giá trị khóa phổ biến. Khi nó ở trong kvstore phổ biến, bạn sẽ có thể nhìn thấy nó từ ứng dụng trên các thiết bị khác. Bạn thậm chí có thể đồng bộ giữa các ứng dụng khác nhau miễn là chúng sử dụng cùng một số nhận dạng.

Bạn cũng nên đăng ký thông báo NSUbiquitousKeyValueStoreDidChangeExternallyNotification để xem các thay đổi mới và cập nhật standardUserDefaults trên thiết bị cho phù hợp.

+0

Đó là âm thanh rất hữu ích và tôi m vui mừng khi biết rằng có một lớp iCloud cho việc này. Ứng dụng của tôi sử dụng danh sách URL URL tùy chỉnh và thông tin liên quan (tên, tỷ lệ làm mới) được lưu trữ trong danh sách. Tôi tự hỏi nếu dữ liệu ứng dụng đó sẽ là quá nhiều để lưu trữ theo cách này (nó được giới hạn ở 64 kb). Điều này có thể tốt hơn cho các cài đặt đơn giản hơn như url nào hiện được chọn, nhưng không phải để lưu trữ dữ liệu ứng dụng. Tôi đã có một cách để người dùng nhập và xuất dữ liệu qua email bằng lược đồ URL tùy chỉnh, vì vậy tôi đang cố gắng quyết định xem iCloud có còn là cách tốt nhất để thực hiện điều này hay không. – Jackson

+2

Cửa hàng giá trị khóa phổ biến chắc chắn phù hợp hơn với các giá trị cài đặt nhỏ hơn. Nếu bạn có dữ liệu có thể vượt quá 64kb, bạn sẽ phải sử dụng đồng bộ hóa dựa trên tài liệu để thay thế. Tôi sẽ ghi dữ liệu ứng dụng vào một tệp plist riêng biệt và di chuyển nó vào vùng chứa iCloud phổ biến nơi nó sẽ được đồng bộ hóa với các thiết bị khác. Tôi sẽ nói rằng bằng cách sử dụng iCloud và làm cho đồng bộ hóa dữ liệu giữa thiết bị hoàn toàn minh bạch cho người dùng của bạn chắc chắn là một trải nghiệm tốt hơn. – kevinyc

16

Tương tự như MKiCloudSync, tôi cũng có một thư viện trên GitHub gọi SDCloudDefaults. Thay vì tự động đồng bộ hóa, có một đối tượng mới mà bạn sử dụng thay vì NSUserDefaults để lưu vào cả iCloud và NSUserDefaults. Điều này có nghĩa là bạn có thể quyết định các phần tử nào được lưu trữ cục bộ và các phần tử nào được lưu trữ trong đám mây.

(tôi thấy MKiCloudSync sau khi tôi đã thực hiện nó. Tôi nghĩ đó là thông minh nhưng tôi không muốn đồng bộ hóa tất cả mọi thứ để iCloud vì vậy giải pháp của tôi vẫn hoạt động tốt hơn cho tôi.)

+0

Cảm ơn bạn đã thêm điều đó. Tôi đã thêm một tuyên bố if vào MKiCLoudSync lúc đầu, nhưng sau đó tôi đã không kết thúc bằng cách sử dụng nó và kết thúc viết lại nó cho mục đích của riêng tôi. Tôi đã kết thúc đồng bộ hóa mọi thứ nhưng chỉ khi người dùng nói như vậy (không tự động ở chế độ nền). – Jackson

+0

cảm ơn bạn, chính xác những gì tôi đang tìm kiếm – davis

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