在 iOS 中启动快捷操作时,有没有办法不打开启动画面/应用程序?

Posted

技术标签:

【中文标题】在 iOS 中启动快捷操作时,有没有办法不打开启动画面/应用程序?【英文标题】:Is there a way to not open the splash screen/app when launching a shortcut action in iOS? 【发布时间】:2019-03-21 12:38:24 【问题描述】:
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem,
                     completionHandler: @escaping (Bool) -> Void) 
        if shortcutItem.type == "com.xyz.test.tests.firstAction" 
            if let url = URL(string: "https://www.google.com/") 
                DispatchQueue.main.async 
                    UIApplication.shared.openURL(url)
                
                print("\(shortcutItem) was tapped")
            

这是我要执行的代码。执行操作后有没有办法关闭应用程序?如果不是,我猜它是上​​下文所必需的。

【问题讨论】:

【参考方案1】:

试试exit(0),但你不能发布它

苹果评论:

我们发现您的应用包含用于退出应用的 UI 控件。 这不符合 ios 人机界面指南,因为 App Store 审核指南要求。

请参考所附截图。

iOS 人机界面指南指定,

“随时准备停止 iOS 应用程序在人们按下时停止 主页按钮打开不同的应用程序或使用设备 功能,例如电话。特别是,人们不会点击 应用程序关闭按钮或从菜单中选择退出。提供一个好的 停止体验,iOS 应用程序应该:

尽快并尽可能频繁地保存用户数据,因为 退出或终止通知可以随时到达。

在停止时以最精细的细节保存当前状态 这样人们在开始 再次申请。例如,如果您的应用显示滚动数据, 保存当前滚动位置。”

删除任何退出应用程序的机制是合适的。

【讨论】:

感谢这对测试有用,需要找出替代方法。 @praza24 你的替代品是什么意思? 我在生产中需要这个,但正如你之前提到的,它不会被苹果通过。我想 UIApplication 总是需要的,点击快捷方式后,即使不需要,也总是启动应用程序。 @praza24 你可以使用全屏 webView :) 或 SFSafariController 这就是我所做的,但应用程序仍在启动

以上是关于在 iOS 中启动快捷操作时,有没有办法不打开启动画面/应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

Cocos2d 和 iOS:有没有办法阻止屏幕保护程序在我的游戏中启动?

有没有办法在不重新启动应用程序的情况下使 NSBundle 本地化缓存失效? [iOS]

在后台应用程序时重新启动没有用户界面的iOS应用程序?

如何检测从“启动”文件夹快捷方式启动?

有没有办法在不重新启动 Xcode 6 的情况下打开 Swift Playground?

VS启动时不显示最近打开项目的解决办法