2016-09-06 4 views
3

In iOS 10 erscheinen die neuen Heute Widgets auch, wenn der Benutzer 3D das App Icon berührt. Ich möchte dort Buttons hinzufügen, die in die App starten und ein bestimmtes Dokument öffnen (ähnlich dem Apple Music Widget). Was soll ich dafür verwenden?iOS 10 Heute Widget Buttons

Danke

Antwort

4

heute Erweiterungen haben eine NSExtensionContext, als Eigenschaft Extension ausgesetzt. ExtensionContext hat eine openURL-Methode, mit der Sie eine private URL übergeben können, um Ihre App zu starten.

Dies ist eine ziemlich breite Frage, die einen breiten Überblick über die Technik bietet.

(1) registrieren Sie ein benutzerdefiniertes URL-Schema in Ihrer Haupt-App, z. myapp:

hinzufügen Schlüssel zur Anwendung plist-Datei, z.B .:

<key>CFBundleURLTypes</key> 
<array> 
<dict> 
    <key>CFBundleURLName</key> 
    <string>com.mycompany.myapp</string> 
    <key>CFBundleURLScheme</key> 
    <array> 
    <string>myapp</string> 
    </array> 
</dict> 
</array> 

diese Register mit iOS, die Ihre Anwendung des "myapp" Schema behandelt. Benutze deinen eigenen Namen hier und wähle einen aus, der höchstwahrscheinlich einzigartig ist!

(2)

[self extensionContext] openURL:[NSURL URLWithString:@"myapp://someurl"] completionHandler:nil]; 

(3) die Bearbeitung des Anrufs in der Anwendung Delegieren Ihrer App openURL auf Extension Ihrer heutigen Erweiterung View-Controller aufrufen und es ist handleOpenURL Methode

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
{ 
    // do something here 
} 

Of Natürlich geht das davon aus, dass Sie Schaltflächen in Ihr Heute-Widget eingefügt haben und über die entsprechenden Handler verfügen, um die Schaltfläche drücken und eine entsprechende URL an die App übergeben zu können.

Sie haben die Frage mit Swift markiert, aber diese Beispielschnipsel sind in Obj-C, tut mir leid.

+0

Das ist großartig. Ich werde einen Blick darauf werfen. Vielen Dank. –

Verwandte Themen