iOS 10 个今日小部件按钮

iOS 10 Today Widget Buttons

在 iOS10 中,当用户 3D 触摸应用程序图标时,新的 Today Widgets 也会出现。我想在那里添加启动到应用程序并打开特定文档的按钮(类似于 Apple Music 小部件)。我应该使用什么来实现这一目标?

谢谢

今天扩展有一个 NSExtensionContext,暴露为 属性 extensionContext。 ExtensionContext 有一个 openURL 方法,你可以传递一个私有 URL 来启动你的应用程序。

这是一个相当广泛的问题,因此提供了对该技术的广泛概述。

(1) 在您的主应用程序中注册自定义 URL 方案,例如我的应用程序:

将密钥添加到应用程序 plist 文件,例如:

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

这向 iOS 注册您的应用程序处理 "myapp" 方案。在这里使用你自己的名字,并选择一个很可能是独一无二的!

(2) 在您今天的扩展视图控制器的 extensionContext 上调用 openURL

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

(3) 在您的应用程序的应用程序委托中处理调用,它是 handleOpenURL 方法

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

当然,这假设您已经在今天的小部件中放置了按钮,并且有适当的处理程序来使用按钮按下并将适当的 URL 传递给应用程序。

你用 Swift 标记了问题,但这些示例片段是在 Obj-C 中,对此感到抱歉。