iOS 16 Widget Kit点击Widget唤起URL Scheme功能失效问题求助
解决Widget点击唤起计算器App的问题
我来帮你排查下这个问题,你的思路方向是对的,但可能漏了两个关键细节,导致点击Widget没反应:
1. 用错了计算器的URL Scheme
iOS自带计算器的正确URL Scheme是calshow://,而不是你用的calc://——这个是很多开发者容易记错的点!先把Widget里的widgetURL改成正确的Scheme:
Gauge(value: 50, in: 0.0...100.0) { } currentValueLabel: { Text("Open App") } .gaugeStyle(.accessoryCircularCapacity) .widgetURL(URL(string: "calshow://")!) // 这里改成calshow://
2. 必须在Info.plist中声明允许查询的Scheme
从iOS 9开始,系统要求App必须显式声明要唤起的第三方App的URL Scheme,否则会被拦截。你需要在项目的Info.plist里添加LSApplicationQueriesSchemes数组,把calshow加进去:
如果用源码编辑Info.plist,添加这段代码:
<key>LSApplicationQueriesSchemes</key> <array> <string>calshow</string> </array>
如果用可视化编辑:
- 右键点击Info.plist → Open As → Source Code
- 插入上述代码,或者在可视化界面点击
+号,添加LSApplicationQueriesSchemes(类型选Array),然后在数组里添加一个String项,值为calshow
额外注意事项
- 测试最好用真机:虽然模拟器也有计算器,但有时候URL Scheme的唤起在模拟器上可能有兼容性问题,真机测试更准确
- 如果是唤起第三方App,一定要确认对方公开的URL Scheme是什么,并且同样要在
LSApplicationQueriesSchemes里声明对应的Scheme
按照这两步修改后,点击Widget应该就能正常唤起计算器了!
内容的提问来源于stack exchange,提问作者user17979727




