2015-04-17 6 views
11

Beim Erstellen einer App-Gruppen-ID im Provisioning-Portal (oder wie auch immer es jetzt heißt), heißt es "Geben Sie einen eindeutigen Bezeichner für Ihre App-Gruppe ein, beginnend mit der Zeichenfolge 'group'" und scheint dies im Eingabefeld zu erzwingen . Außerdem verwenden viele Beispielcodes App-Gruppen-ID-Zeichenfolgen wie "group.com.company.blah".iOS/OSX App Group IDs, starten Sie sie mit "Gruppe". oder "Team-ID"?

jedoch die endgültigen Abschnitte ich gesehen habe auf der ganzen Dokumentation verknüpft, App Sandbox Design Guide > App Sandbox In Depth > Container Directories and File System Access > The Application Group Container Directory und Entitlements Key Rerefence > Enabling App Sandbox > Adding an App to an App Group, direkt dies im Widerspruch, eindeutig erklärt, „muss durch einen Punkt mit Ihrem Entwicklungsteam ID, gefolgt beginnen“.

Die Beispiele in diesem Abschnitt sind wie "Z123456789.com.example.app-group" bzw. "DG29478A379Q6483R9214.HolstFirstAppSuite". (Whah, ist das letzte eine super komische Team ID oder was?)

Also, mit dieser Inkonsistenz, was mache ich, um eine App Group ID zu arbeiten? Soll ich im Provisioning Portal "group.TEAM-ID.com.example.blah" eingeben? Und sollte ich dieselbe Zeichenfolge in meinen Quelltextzeichenfolgen verwenden oder die "Gruppe" weglassen? Teil sein wie die vielen Codebeispiele? Oder ist die Dokumentation falsch und die Team ID wird nie benötigt?

Kontext ... Ich habe versucht, eine iOS-Cocoapod-Test-App zu aktualisieren, so dass ich die Erweiterung < -> App-Kommunikation in Aktion sehen kann. Nach dem Aktualisieren der App IDs und Gruppen-ID zu einem in meiner Kontrolle und bei der Verwendung einer Gruppen-ID ähnlich wie im ursprünglichen Projekt, wie "group.com.mycompany.thothie", sehe ich containerURLForSecurityApplicationGroupIdentifier: nichts tun, aber Null zurückgeben und nothing else hat behoben es.

UPDATE: (hat dieses Bild für Klarheit zu sehen, wie SO mich darüber informiert, dass diese Q viele Hits bekommt) Es stellt sich heraus das Zeug toleranter ist, als ich ursprünglich dachte, da das nil Ergebnis stellt sich heraus gewesen zu sein (meist ?) mein Tun. Siehe die Antwort & ihr Kommentar Thread. Ich habe nicht überprüft, ob die Dokumentation & Beispiele noch klarer sind.

Antwort

5

Auf https://developer.apple.com innen „Zertifikaten, Identifiers & Profile“, wenn Sie den „App Groups“ Abschnitt gehen und zuerst Ihre App-Gruppe generieren, alles, was erforderlich ist, ist die erzwungene group.com.companyname.appname

Wie Solange com.companyname.appname mit dem übereinstimmt, was Sie als Bundle-Bezeichner für Ihr Ziel unterhalb von general festgelegt haben, sollten Sie dann zum Tab "Capabilities" wechseln, "App Groups" aktivieren, auf das Refresh-Symbol und die gerade Gruppe klicken erstellt in Provisioning Portal sollte dort erscheinen, als "group.com.companyname.appname" Sie haben die Option, es auschecken, und dann wird eine Fehlermeldung mit Berechtigungen. Wenn Sie auf "Problem beheben" klicken, sollte dies automatisch gelöst werden.

Wenn Sie jetzt zu Ihrer Berechtigungsdatei navigieren, werden Sie feststellen, dass "com.apple.security.applications-groups" ein Element hat und auf denselben "group.com.companyname.appname" gesetzt wird. Wert.

Ich habe auf Geräten getestet und habe noch keine Probleme. Dies berücksichtigt nicht die Inkonsistenz in der Dokumentation, aber ich kann garantieren, dass dies funktioniert.

+0

"Solange com.companyname.appname mit dem übereinstimmt, was Sie als Bundle-Bezeichner eingerichtet haben" .. kann nicht sowohl für App als auch für Erweiterung oder für eine Sammlung mehrerer Apps gelten. Es gibt also eine Einschränkung für den Gruppen-ID-Wert, der der "Gruppe" folgt. Teil oder nicht? –

+0

Für eine Erweiterung, die ich in Apples Beispielcode aus "WatchKit Catalogue Watchkit App" gesehen habe, hat der Bundle Identifier einen zusätzlichen Abschnitt, wie "com.example.apple-samplecode.WatchKit-Catalog.watchkitextension" und dann für die WatchKit App es hat auch einen zusätzlichen Abschnitt "com.example.apple-samplecode.WatchKit-Catalog.watchkitapp" abgeholt Also vielleicht ist die einzige Einschränkung der erste Teil der Bundle-Kennung. – gregyoung14

+0

"vielleicht" .. Yup, die mein eigenes Vertrauen in all das spiegelt. Ich hatte gehofft, definitive Antworten zu bekommen und alles, was ich gefunden habe, ist "das scheint basierend auf dem Beispielcode zu funktionieren". Vielen Dank, dass Sie sich angemeldet haben, und da dies der beste ist, den man angesichts des aktuellen Stands der Dokumentation sagen kann, wird Ihre Antwort vergeben. –

4

Ich wurde von der Inkonsistenz in diesem zwischen iOS und MacOS bei der Einreichung der Mac OS Sierra-Version meiner App gebissen.

group.better.FYI arbeitet für iOS Einreichungen aber die Ergebnisse in den folgenden Fehlern während macOS Einreichungen (läuft sehr gut, ansonsten ohne Warnungen oder Fehler):

ERROR ITMS-90286: "Invalid Code Signing Entitlements. Your application bundle's signature contains code signing entitlements that are not supported on macOS. Specifically, value '[group.better.fyi]' for key 'com.apple.security.application-groups' in 'ind.ie.Better-Mac.pkg/Payload/Better.app/Contents/PlugIns/Blocker-Mac.appex/Contents/MacOS/Blocker-Mac' is not supported. This value should be a string or an array of strings, each starting with your TEAMID followed by a dot '.' ."

Ersetzen dass mit $(TeamIdentifierPrefix)better.fyi in der Registerkarte Capabilities unter App-Gruppen das Problem behoben .

Dies erzeugt natürlich eine Inkonsistenz zwischen den iOS- und Mac-Apps.

+1

Richtig, aber dann können Sie einen Fehler erhalten, wie "Verwendung von kCFPreferencesAnyUser mit einem Container ist nur für Systemcontainer erlaubt, von cfprefsd trennen" (https://stackoverflow.com/questions/38275395/failed-to-read-values-in- -cfprefsplistsource-ios-10) - wirklich seltsame Situation. – ctietze

+0

@ctietze Wie sind Sie die Fehlermeldung losgeworden? – Daniel

+0

Ich habe nicht: AFAIK, diese Fehlermeldung kann ignoriert werden, da sie fehlerhaft ist und keine Änderung im Verhalten anzeigt. – ctietze