在iOS中实现3D Touch

当用户选择快速操作时,您的应用程序将启动(如果当前未运行),否则,如果您的应用程序已启动并且处于后台/暂停状态,则您的应用程序将在应用程序委托对象收到快速操作之前被激活消息或通知。 对于任何应用程序,我们最多可以有4个快捷方式操作;如果从应用程序商店下载了第五个名为shareApp的快捷方式,则系统会添加该操作。

我们的应用程序中可以同时包含静态和动态快速操作,但是静态操作比动态操作具有更高的优先级。 因此,如果您的应用具有3个静态操作和3个动态快速操作快捷键,则只会向用户展示一个动态操作以及这3个静态操作。

→开始编码:

要添加快速操作,请在应用程序的Info.plist文件中创建UIApplicationShortcutItems的数组。 该数组的每个元素都是一个字典,其中包含一个快速动作的属性 例如动作的标题,字幕,图标,动作的类型(快捷方式的唯一标识符)

按键说明:

  • UIApplicationShortcutItemType:必需的字符串,用于标识您的快速操作。 字符串必须是唯一的且特定于应用程序。 一个好主意是在它的前面加上您的包ID或其他一些应用程序唯一的String。 如果您想使用应用程序包标识符,请使用类似这样的占位符,该占位符为您提供包标识符的路径。 “ $(PRODUCT_BUNDLE_IDENTIFIER)”。 因此,即使将来更改了捆绑包ID,您的应用程序快捷方式也不会生效,也不需要在其他类似位置手动更改捆绑包ID。
  • UIApplicationShortcutItemTitle:必需的字符串,一旦用户按下应用程序的图标,该字符串就会显示快速操作的标题。 如果您的应用程序已本地化,则可以设置Localized.string文件的String键。 向用户显示了快速操作。
  • UIApplicationShortcutItemSubtitle:一个可选的字符串,用于显示快速操作的字幕。 字幕也可以本地化为标题。
  • UIApplicationShortcutItemIconType:可选的字符串,显示由库提供的系统图标。 检查UIApplicationShortcutIcon枚举以查看所有可能的字符串键。
  • UIApplicationShortcutItemIconFile:可选的字符串,用于显示要从应用程序包中使用的自定义图标图像,或资产目录中图像的名称。
  • UIApplicationShortcutItemUserInfo:一个词典,其中包含一些您想通过快速操作传递的额外信息。

快速操作会在iOS主屏幕上显示给用户,因此在选择这些选项时,我们需要在我们的应用中进行处理。 处理它们的最佳位置是您的App-elegate类。 在此应用程序中,我为UIApplicationShortcutItemType使用了一个枚举,以避免键入错误。 每当用户在主屏幕上选择快速操作时,在应用程序的App-delegate类中,都会调用application:shortcutItem:completionHandler:方法。 此方法必须使用布尔值调用完成处理程序,这取决于快速操作的成功或失败。

application:didFinishLaunchingWithOptions:方法中,我们将该值保存到launchShortcutItem中,以便接下来可以处理它。

下一个要调用的方法是applicationDidBecomeActive ,此方法在application:didFinishLaunchingWithOptions:之后启动在您的应用程序首次启动期间,或者每次用户进入您的应用程序时,该应用程序仍在后台打开。

当用户选择一项快速操作时,该应用将启动或继续。 因此,将在调用performActionForShortcutItem方法之前,调用上述两个方法( application:didFinishLaunchingWithOptions:或applicationDidBecomeActive )中的任何一个。 正如我们上面所讨论的,这是通过使用true或false调用完成操作(Bool)来处理快捷方式操作的必需方法。

在下图中,我为快速操作的快捷方式标识符定义了一个枚举。 我使用此枚举类型来查找用户在handleShortcutItem方法中触发了哪些操作。

在下图中,我们定义了handelShortcutItem方法。 首先,我们检查触发的快捷方式操作的类型是否为nil。 然后得到触发类型。 使用开关盒后,将执行所需的功能。

→动态快捷方式动作:到目前为止,我们已经看到了在应用程序的info.plist文件和然后在AppDelegate类中配置的静态动作。 我们也可以实现动态动作,但是请记住仅显示了4个动作,静态动作的优先级较高。 让我们看看配置动态动作。

在上图中,我通过代码配置了动态操作。 首先,我设置了类型,记住它必须是唯一的并且是必需的,就像在我以应用程序的包标识符作为前缀分配类型之前一样。 然后,我通过API初始化了快捷方式项。 在这一章中,您可以根据需要动态地提供标题和副标题(以及图标)。 最后,我将创建的项目分配给UIApplication的shortcutItems数组。 您可以在需要的地方调用上面的代码段,该代码段已包装在函数中。 我在ViewController的viewDidLoad方法中调用了此方法。

在AppDelegate类中,我编写了另一个函数来执行此动态操作。 您会看到它是自我解释,非常简单。

最后,我修改了handleShortcutItem函数以执行动态操作。 检查以下代码(图中)

现在,您已经看到为iOS移动应用程序实施主屏幕快捷方式操作有多么容易。 享受编码!!!

您可以在此处下载示例项目。

— — — — — — — — — — ************************** — — — — — — — — —

如果您喜欢我的教程,请在medium twitterlinkedIn上关注我 帐户。

谢谢阅读…

****************************!!!再见!!!************** **************