当它们不存在时如何打开我的应用程序的设置

Posted

技术标签:

【中文标题】当它们不存在时如何打开我的应用程序的设置【英文标题】:How do I open my App's Settings when they don't exist 【发布时间】:2019-08-29 01:09:46 【问题描述】:

我的应用需要访问用户的媒体库。我的问题与以下情况有关:

    此应用不存在 ios 设置条目。 用户按下链接以启动 Apple 的媒体选择器。 我弹出苹果的媒体库访问授权对话框MPMediaLibrary.requestAuthorization() 用户按下“不允许” 用户再次按下链接以启动 Apple 的媒体选择器。

    我弹出一个警告对话框,解释问题并提供打开应用程序 iOS 设置的按钮。

    UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
    

只要 iOS 设置应用程序/屏幕未打开,此功能就可以正常工作。 iOS 设置应用启动并打开我的应用新创建的设置。

如果 iOS 设置应用程序/屏幕打开(不是我的应用程序,只是在某处打开),iOS 设置应用程序会出现并定位在原来的位置。不是我想要的。 如果我切换回我的应用程序,弹出对话框并再次执行打开 URL,则会为我的应用程序打开 iOS 设置。

这是正常行为吗?如何更正?

*** 很好地提供了指向现有问题的链接,这些问题可能是我正在寻找的答案,但没有成功。


我仍然被我的应用程序设置问题所困扰。进一步的测试带来了一个相关的问题。像设置一样,我的应用程序图标没有出现。第二次安装似乎解决了这两个问题。我认为通过提供应用程序图标的详细信息,有人可能会看到问题。

Mac Mini 莫哈韦 10.14.4 Xcode 10.2 Xcode - 项目 - IOS 部署目标 = 11.0 Xcode - 目标 - 部署目标 = 12.1 Xcode - Swift v5

物理设备: - iPhone 6plus ios 12.1.3 - iPhone X iOS 12.1.4

行为:

- installation on Xcode Simulator results in:
    * icon appears as it should with initial installation.(multiple devices tested)  

- installation on physical devices by Xcode side-loading via debugger results in:
    * after initial installation, icon is missing. 
    * app runs as expected.
    * ios settings entry exists.
    * ios iPhone storage entry exists.
    * 2nd debug run, icon appears. (2nd run can be immediate or after device disconnected/reconnected or Xcode restarted)  

- installation of ipa on physical devices by Xcode -> Window -> Devices & Simulators results in:
    * after initial installation, icon is missing.
    * (of course app cannot be run without icon)
    * ios settings entry exists.
    * ios iPhone storage entry exists.
    * 2nd ipa installation, icon appears. (2nd run can be immediate or after device disconnected/reconnected or Xcode restarted)

注意:我已经通过几种不同的工具重新创建并重新生成了我的图标。行为没有变化。

注意:我从 GitHub 下载了几个简单的技术演示 Xcode 项目。 它们不包含任何图标。他们依赖于 ios 默认图标。与我的应用程序相同的行为。

我们将不胜感激任何见解或直接猜测。

【问题讨论】:

我使用几乎相同的代码在我的应用程序中打开设置,但最终它可以很好地打开我的应用程序设置页面,即使设置已经打开。我的代码有点不同:UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!) 这可能是因为我使用的是更新版本的 Swift。您可以尝试使用最新版本的 Xcode 和 iOS 设置一个新项目并尝试重现该问题。如果问题消失了,您应该将所有内容更新到最新版本。 感谢您的回复,赞多。我的 Swift 4.0 IOS 12.1 代码使用了您建议的开放 URL 语法。我刚刚脑子放了个屁。我继续按照您的建议将项目升级到 Swift 4.2。在物理 iPhone 6 plus 或 iPhone X 上进行测试时,我仍然会得到相同的行为,无论是连接的还是不连接的。所以....没有快乐。 我刚刚创建了一个新项目,在情节提要视图的中心放置了一个按钮,制作了一个动作插座并将我之前的台词放入动作中。我注意到它会打开设置,但不会打开我的应用页面。这是因为手动滚动设置时应用页面不存在。然后我启用了后台模式远程通知,页面出现了。现在单击按钮打开应用程序的设置。您的应用可能没有任何设置?您可以在git.zsinfo.nl/Zandor300/appsettingstest 下载我的测试项目,自己尝试一下。 (Xcode 12.2,Swift 5) 赞多,感谢您的努力。在我的情况下,系统设置应用程序条目似乎是在 Xcode 安装/侧面加载/运行应用程序时创建的。 (我想在不运行的情况下在物理设备上测试安装....可以在 Xcode 中完成吗?) 我在上一条评论中所说的不正确。当我允许或禁止音乐库访问授权时,系统的设置应用程序条目似乎已创建。 【参考方案1】:

为了它的价值.....我将应用程序提交给 Apple 进行审查。它已获得批准并在应用商店(歌曲播音员)上。当通过 Xcode 安装在我的设备上时,我上传到 App Store Connect 的 ipa 表现出相同的“最初安装时没有应用程序图标”行为。从 App Store 下载时,图标会按预期显示。

去看看。

【讨论】:

这应该是一条评论。答案需要有足够的信息来理解答案。答案应以合理的详细程度进行描述和/或包含答案的最小示例。 答案是“别担心”。在我的情况下,无论是侧载还是将 ipa 部署到设备,这似乎都是 Xcode 唯一的问题。

以上是关于当它们不存在时如何打开我的应用程序的设置的主要内容,如果未能解决你的问题,请参考以下文章

当设备中不存在 Dropbox 应用打开我的应用时,Dropbox 插件 Cordova 崩溃

如何修复,“类路径资源 [...] 无法打开,因为它不存在”在运行时使用 Spring

当用户不打开应用程序时如何发送通知?

当打开的控制台窗口关闭时,如何防止我的程序关闭?

仅当文件不存在时如何创建文件?

当应用程序在后台时如何停止位置服务?