Я создал приложение WatchKit с шаблоном XCode по умолчанию. Я добавил право на группу приложений для iOS Target, в Target App Attit Target и в Target Extension Target. (Это название приложения группа: group.com.lombax.fiveminutes) Затем я попытался получить доступ к общему URL папки как с IOS App и расширения WatchKit:containerURLForSecurityApplicationGroupIdentifier: дает разные результаты на симуляторе iPhone и Watch
Расширение:
@implementation ExtensionDelegate
- (void)applicationDidFinishLaunching {
// Perform any final initialization of your application.
NSURL *test = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.lombax.fiveminutes"];
}
IOS, приложение:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSURL *test = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.lombax.fiveminutes"];
// ...
}
Однако test
NSURL отличается:
КСН:
файла: /// Пользователи/Ломбардо/Library/Developer/CoreSimulator/Devices/38B983DB-342F-4A47-8C26-5D2C92CDB666/данные/Контейнеры/Shared/AppGroup/8DEE182E-AFE6-47DD-BA2B-6B0520158A8B/
на Watch:
файла: /// Пользователи/Ломбардо/Library/Developer/CoreSimulator/Devices/BF52D613-25FF-4092-A5B2-9C3F1B616160/данные/Контейнеры/Shared/AppGroup/CECB5EFC-7FBD-4C84-A878-1314CB7CF211/
И по этой причине я не могу поделиться данными между iOS App и WatchKit Extension.
I cannon попробуйте на реальном устройстве, так как у меня нет WatchOS 2.0 на моем Apple Watch. Любые советы? Благодаря
UPDATE Я сделал некоторые другие тесты:
- установлен WatchOS 2, проблема все еще сохраняется на реальных устройствах.
Это магазин URL для моего iPhone:
NSURL * @ "Файл: /// частный/вар/мобильный/Контейнеры/Shared/AppGroup/3D05D159-94D6-409C-9A38 -90E0830D0C3F/FiveMinutes.sqlite "
И это магазин URL для моего Дозора:
NSURL * @" файл: /// приват д/вар/мобильный/Контейнеры/Shared/AppGroup/F1E89377-F456-4FC2-BAAC-3DD705EF381A/FiveMinutes.sqlite»
Два приложения читает и писать в-из двух различных .sqlite
файлов.
- на тренажере, если я жестко закодировать один из URL-адресов, как IOS симулятор и часы имитатора умеют читать-писать один и тот же
.sqlite
файл и обмениваться контентом. Тем не менее, это не возможно на реальных устройствах, так как расширение Часы не может писать на пути IOS:
URL: файл: /// частный/вар/мобильный/Контейнеры/Shared/AppGroup/3D05D159-94D6 -409C-9A38-90E0830D0C3F/Параметры FiveMinutes.sqlite: (null) ... возвращенная ошибка Ошибка домена = NSCocoaErrorDomain Код = 512 «Файл не может быть сохранен». UserInfo = {reason = Не удалось создать файл; code = 2} с помощью словаря userInfo { reason = "Не удалось создать файл; code = 2"; }
Но вы пытались на самом деле положить файлы и получить к ним доступ? Бог знает, как работает симулятор и какие папки он использует. Говоря о watchOS 2.0. Теперь это родные приложения. Разве вы не должны добавлять право на просмотр приложения? – Yaroslav
Да, я пытался писать файлы, и они помещаются в разные местоположения, iOS не может получить доступ к файлу часов, а часы не могут получить доступ к файлу iOS. Я добавил права на приложение iOS, приложение часов и расширение часов. Похоже, что это право добавлено в порядке, поскольку, если я изменю строку права на что-то другое, возвращаемый NSURL станет нулевым – LombaX