Tôi đã tạo một Ứng dụng WatchKit với Mẫu XCode mặc định. Tôi đã thêm một nhóm ứng dụng được hưởng Mục tiêu iOS, cho Mục tiêu ứng dụng của Watchkit và Mục tiêu mở rộng ứng dụng Watchkit. (Đây là tên nhóm ứng dụng: group.com.lombax.fiveminutes) Sau đó, tôi đã cố gắng để truy cập vào URL thư mục chia sẻ với cả iOS App và mở rộng WatchKit:containerURLForSecurityApplicationGroupIdentifier: cung cấp các kết quả khác nhau trên iPhone và Watch simulator
Extension:
@implementation ExtensionDelegate
- (void)applicationDidFinishLaunching {
// Perform any final initialization of your application.
NSURL *test = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.lombax.fiveminutes"];
}
iOS App:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSURL *test = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.lombax.fiveminutes"];
// ...
}
Tuy nhiên, test
NSURL là khác nhau:
Trên iOS:
tệp: /// Người dùng/Lombardo/Thư viện/Nhà phát triển/CoreSimulator/Thiết bị/38B983DB-342F-4A47-8C26-5D2C92CDB666/data/Containers/Shared/AppGroup/8DEE182E-AFE6-47DD-BA2B-6B0520158A8B/
trên Watch:
file: /// Users/Lombardo/Library/Developer/CoreSimulator/Thiết bị/BF52D613-25FF-4092-A5B2-9C3F1B616160/data/Container/Shared/AppGroup/CECB5EFC-7FBD-4C84-A878-1314CB7CF211/
Và vì lý do này, tôi không thể chia sẻ dữ liệu giữa Ứng dụng iOS và Tiện ích mở rộng WatchKit.
Tôi thử dùng thiết bị thực vì tôi không có WatchOS 2.0 trên Apple Watch. Bạn có lời khuyên nào không? Cảm ơn
CẬP NHẬT tôi đã làm một số xét nghiệm khác:
- cài đặt watchos 2, vấn đề này vẫn còn tồn tại trên thiết bị thực.
Đây là cửa hàng url cho iPhone của tôi:
NSURL * @ "file: /// private/var/mobile/Container/Shared/AppGroup/3D05D159-94D6-409C-9A38 -90E0830D0C3F/FiveMinutes.sqlite "
Và đây là cửa hàng url cho Xem tôi:
NSURL * @" file: /// privat e/var/mobile/Container/Shared/AppGroup/F1E89377-F456-4FC2-BAAC-3DD705EF381A/FiveMinutes.sqlite"
Hai ứng dụng đọc và viết để từ hai .sqlite
file khác nhau.
- Trên trình mô phỏng, nếu tôi mã hóa một trong các URL, cả trình mô phỏng iOS và Trình mô phỏng đồng hồ có thể đọc cùng một tệp
.sqlite
và chia sẻ nội dung. Tuy nhiên, điều này không thể thực hiện trên các thiết bị thực kể từ khi mở rộng Xem không thể ghi vào con đường iOS:
URL: file: /// private/var/mobile/Container/Shared/AppGroup/3D05D159-94D6 -409C-9A38-90E0830D0C3F/NămMinutes.sqlite tùy chọn: (null) ... trả về lỗi Tên miền lỗi = NSCocoaErrorDomain Code = 512 "Không thể lưu tệp." UserInfo = {reason = Không thể tạo tập tin; code = 2} với từ điển userInfo { reason = "Không thể tạo tệp; mã = 2"; }
Nhưng bạn đã thử thực sự đặt tệp và truy cập chúng? Thiên Chúa biết làm thế nào mô phỏng hoạt động và những gì các thư mục hiện nó sử dụng. Phát biểu của watchOS 2.0. Đó là những ứng dụng gốc ngay bây giờ. Bạn không nên thêm quyền lợi cho ứng dụng xem? – Yaroslav
Có, tôi đã cố gắng viết tệp và chúng được đặt ở các vị trí khác nhau, iOS không thể truy cập vào tệp xem và đồng hồ không thể truy cập vào tệp iOS. Tôi đã thêm các quyền lợi vào ứng dụng iOS, ứng dụng đồng hồ và tiện ích mở rộng đồng hồ. Quyền lợi dường như được bổ sung tốt, vì nếu tôi thay đổi chuỗi quyền lợi thành một thứ khác thì NSURL được trả về sẽ trở thành không – LombaX