我在我的 iOS 应用程序上启用了 url 方案和通用链接。
在 iOS 上,使用模拟器手机,我可以在 safari 地址栏中输入
myapp://
,它将弹出我的应用程序。但在实际的 iPhone 上,在 safari 地址中输入 myapp://
会显示以下错误:
Safari cannot open the page because the address is invalid
我在这里缺少什么?为什么在模拟器上可以用,但在真机上却不行?我该如何解决这个问题?我确实知道 iOS 已经转向通用链接 - 而且这正在发挥作用。但只是想弄清楚为什么 urlscheme 适用于其中一个而不适用于另一个。需要注意的一件事是模拟器运行的是 iOS 16.2,而 iPhone 运行的是 iOS 15.3.1(它是 iPhone 7,无法更新到 iOS 16)。人们可能会认为旧版 iOS 会支持 urlscheme,而新版则不会……但这里恰恰相反。
在 Android 上,在 chrome 地址栏中输入
myapp://
可以在物理设备和模拟器上使用。
这是我的
entitlements-release.plist
- 从 cordova 项目文件夹中提取:projectMyapp/platforms/ios/myApp
目录。在 Xcode 中,我确实有权利,但这两个文件几乎是空的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>production</string>
</dict>
</plist>
entitlements-debut.plist
几乎相同,只是字符串显示为 development
。
我找到了问题的根源。事实证明,iPhone 上的 Safari 已设置为
private
模式...当设置回 start page
时,浏览器会识别我的自定义 url 方案。
在尝试解决原始问题时,我遇到了这个线程:iOS Safari 在用户取消后无法识别 url 方案
在让 url 方案再次工作(在 iPhone 上)后,我测试了另一个线程中描述的场景,并且能够复制相同的问题。我现在正在实现一些缓存破坏程序代码,以防止最终用户发生这种情况。