Ho creato un'applicazione WatchKit con il modello XCode predefinito. Ho aggiunto un diritto al gruppo app per la destinazione iOS, alla destinazione app Watchkit e alla destinazione estensione app Watchkit. (Questo è il nome del gruppo app: group.com.lombax.fiveminutes) Poi, ho provato ad accedere all'URL cartella condivisa sia con l'App iOS e l'estensione WatchKit:containerURLForSecurityApplicationGroupIdentifier: fornisce risultati diversi su simulatore iPhone e Watch
Estensione:
@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"];
// ...
}
Tuttavia, il test
NSURL è diverso:
Su iOS:
01.235.164,106174 millionsfile: /// Users/Lombardo/Library/Developer/CoreSimulator/Devices/38B983DB-342F-4A47-8C26-5D2C92CDB666/dati/Contenitori/Shared/AppGroup/8DEE182E-AFE6-47DD-BA2B-6B0520158A8B/
su Watch:
file: /// Users/Lombardo/Library/Developer/CoreSimulator/Devices/BF52D613-25FF-4092-A5B2-9C3F1B616160/dati/Contenitori/Shared/AppGroup/CECB5EFC-7FBD-4C84-A878-1314CB7CF211/
E per questo motivo non sono in grado di condividere i dati tra l'app iOS e l'estensione WatchKit.
I cannon provano su un dispositivo reale poiché non ho WatchOS 2.0 sul mio Apple Watch. Qualche consiglio? Grazie
UPDATE Ho fatto alcuni altri test:
- installata watchos 2, il problema persiste su dispositivi reali.
Questo è l'URL negozio per il mio iPhone:
NSURL * @ "file: /// private/var/mobile/Contenitori/Shared/AppGroup/3D05D159-94D6-409C-9A38 -90E0830D0C3F/FiveMinutes.sqlite "
E questa è l'url serbo per mia selezione:
NSURL * @" file: /// privat e/var/mobile/Contenitori/Shared/AppGroup/F1E89377-F456-4FC2-BAAC-3DD705EF381A/FiveMinutes.sqlite"
Le due applicazioni di leggere e scrivere due diversi .sqlite
i file-da.
- sul simulatore, se mi codificare uno degli URL, sia simulatore di iOS e Guarda il simulatore sono in grado di leggere-scrivere lo stesso file di
.sqlite
e condividere il contenuto. Tuttavia, questo non è possibile su dispositivi reali poiché l'estensione della vigilanza non può scrivere al percorso iOS:
URL: file: /// private/var/mobile/Contenitori/Shared/AppGroup/3D05D159-94D6 -409C-9A38-90E0830D0C3F/FiveMinutes.sqlite opzioni: (null) ... errore restituito Errore Domain = NSCocoaErrorDomain Code = 512 "Impossibile salvare il file." UserInfo = {reason = Impossibile creare il file; code = 2} con dizionario userInfo { reason = "Impossibile creare il file; code = 2"; }
Ma hai provato a mettere effettivamente i file e accedervi? Dio sa come funziona il simulatore e quali cartelle usa. Parlando di watchOS 2.0. Quelle sono app native ora. Non dovresti aggiungere anche la titolarità per guardare l'app? – Yaroslav
Sì, ho provato a scrivere file e sono collocati in posizioni diverse, iOS non può accedere al file di orologio e guardare non può accedere al file iOS. Ho aggiunto le autorizzazioni all'app per iOS, l'app di controllo e l'estensione dell'orologio. Il diritto sembra essere aggiunto bene, dal momento che se modifico la stringa di autorizzazione su qualcosa di diverso, NSURL restituito diventa nullo – LombaX