【发布时间】:2019-08-29 01:09:46
【问题描述】:
我的应用需要访问用户的媒体库。我的问题与以下情况有关:
- 此应用不存在 iOS 设置条目。
- 用户按下链接以启动 Apple 的媒体选择器。
- 我弹出苹果的媒体库访问授权对话框
MPMediaLibrary.requestAuthorization() - 用户按下“不允许”
- 用户再次按下链接以启动 Apple 的媒体选择器。
-
我弹出一个警告对话框,解释问题并提供打开应用程序 iOS 设置的按钮。
UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
只要 iOS 设置应用程序/屏幕未打开,此功能就可以正常工作。 iOS 设置应用启动并打开我的应用新创建的设置。
如果 iOS 设置应用程序/屏幕打开(不是我的应用程序,只是在某处打开),iOS 设置应用程序会出现并定位在原来的位置。不是我想要的。 如果我切换回我的应用程序,弹出对话框并再次执行打开 URL,则会为我的应用程序打开 iOS 设置。
这是正常行为吗?如何更正?
Stackoverflow 很好地提供了指向现有问题的链接,这些问题可能是我正在寻找的答案,但没有成功。
我仍然被我的应用程序设置问题所困扰。进一步的测试带来了一个相关的问题。像设置一样,我的应用程序图标没有出现。第二次安装似乎解决了这两个问题。我认为通过提供应用程序图标的详细信息,有人可能会看到问题。
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 中完成吗?)
-
我在上一条评论中所说的不正确。当我允许或禁止音乐库访问授权时,系统的设置应用程序条目似乎已创建。