ios Identificatori di bundle di estensione WatchKit




apple-watch bundle-identifier (4)

Devi fare attenzione quando cambi gli identificativi del bundle, ecco come dovrebbero essere impostati (è necessario modificare ogni identificativo nel Info.plist per l' app per iPhone , per l' estensione Watchkit e per l' app Watchkit ):

Info.plist applicazione iPhone:

Imposta qualsiasi identificatore di bundle come preferisci (la proprietà "Identificatore di bundle").

Esempio:

Bundle identifier: com.fruitcompany.orange

Info.plist dell'app WatchKit

L'identificatore del bundle qui deve essere preceduto dall'identificatore dell'applicazione iPhone, come questo (esempio):

Bundle identifier: com.fruitcompany.orange.watchkit

È inoltre necessario modificare WKCompanionAppBundleIdentifier che deve corrispondere all'identificatore del bundle dell'applicazione iPhone, in questo modo:

WKCompanionAppBundleIdentifier: com.fruitcompany.orange

Info.plist estensioni Watchkit:

L'identificatore del bundle qui deve essere preceduto dall'identificatore dell'applicazione iPhone, come questo (esempio):

Bundle identifier: com.fruitcompany.orange.watchkit.extension

È inoltre necessario impostare NSExtension nell'attributo NSExtension .

L'identificatore WKAppBundleIdentifier deve corrispondere all'identificatore del bundle dell'app WatchKit in questo modo:

WKAppBundleIdentifier: com.fruitcompany.orange.watchkit

Sto cercando di creare la mia app ma non è riuscita. Mi viene mostrato il messaggio qui sotto.

errore: l'estensione WatchKit non contiene alcuna app WatchKit i cui identificatori di bundle corrispondono a "com.domain.appname.watchkitapp". Verifica che il valore di WKAppBundleIdentifier nel Info.plist dell'estensione WatchKit corrisponda al valore di CFBundleIdentifier nel Info.plist dell'app WatchKit.

Recentemente ho cambiato "com.domain.appname.watchkitapp" in "com.domain.differentappname.watchkitapp" .

Non riesco a trovare dove cambiarlo.


Potrebbe inoltre essere necessario modificare la chiave WKCompanionAppBundleidentifier nella p.list di informazioni dell'app compagno iOS di progetti in modo che corrisponda alla chiave WKAppBundleIdentifer nel file info.plist dell'estensione del kit di controllo. L'ho scoperto quando ho copiato un precedente progetto del kit di orologi e ho modificato WKAppBundleIdentifier nel file info.plist di estensione del kit di orologi in modo che corrispondesse all'identificatore del bundle nel file info.plist del kit di orologi e il progetto continuava ad avere lo stesso errore. Devi andare al Finder, individuare la info.plist del progetto compagno iOS e fare doppio clic su di esso, quindi modificare la chiave WKCompanionAppBundleIdentifer se necessario. Non sono stato in grado di vedere questa chiave cercando in info.plist in Xcode.


Innanzitutto, vorrei evidenziare l'eccellente risposta in questa pagina di @DejanSkledar, poiché tutti i luoghi indicati nella risposta sono importanti.

Detto questo, l'impostazione precisa in quella risposta non era sufficiente per me. Vorrei integrare questa risposta e sottolineare che, dal watchkit 2, sembra esserci una gerarchia richiesta mentre lavori dall'app, all'app watch e infine all'estensione dell'app in termini di ID bundle.

Ecco le impostazioni in ciascuno dei corrispondenti file info.plist che hanno funzionato per me dopo aver trovato la risposta di edwardmp su un problema correlato .

ID pacchetto app per iPhone: com.domain.yourapp

Guarda l'ID pacchetto dell'app: com.domain.yourapp.watchkit

ID pacchetto estensione watchkit: com.domain.yourapp.watchkit.extension

Come puoi vedere, un'app per iPhone ha un'app watchkit, che a sua volta ha un'estensione watchkit, e ognuno di questi livelli deve riflettersi in ciascuno dei rispettivi ID bundle.

Completando le relazioni, l'app per l'orologio deve puntare all'app per iPhone a cui appartiene usando il suo (WKCompanionAppBundleIdentifier) ​​e l'estensione dell'orologio deve puntare all'app per orologio a cui appartiene (WKAppBundleIdentifier).

Guarda l'app WKCompanionAppBundleIdentifier: com.domain.yourapp

Guarda l'estensione dell'app WKAppBundleIdentifier: com.domain.yourapp.watchkit

Spero che questo salvi qualcuno un po 'di tempo, poiché ho dovuto lottare su questo per alcune ore :(


Quindi, non devi necessariamente cambiare qualcosa quando vuoi solo correre su dispositivi di prova. Tuttavia, è necessario richiedere altri due profili di provisioning per testare l'app di visualizzazione. Questi due identificatori aggiuntivi possono essere acquisiti dal target di estensione e dal target dell'app. Sono anche le stesse cose che devi fare quando vuoi caricare l'app di controllo sull'App Store





bundle-identifier