我制作了一个非常简单的应用程序来打开mobilephone
URL(“测试器”):
let url = URL(string: "mobilephone:Test?index=1")
UIApplication.shared.open(url!) { (result) in
if result {
print("success!")
}
else {
print(result)
}
}
然后,我添加了另一个带有该URL处理程序的应用程序(“ Handler”)(位于AppDelegate
中)
func application(_ application: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:] ) -> Bool {
// Determine who sent the URL.
let sendingAppID = options[.sourceApplication]
let source = "\(sendingAppID ?? "Unknown")"
let alert = UIAlertController(title: source, message: url.absoluteString, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
self.window?.rootViewController?.present(alert, animated: true, completion: nil)
return true
}
当然,我在Project→Info→URL Types中注册了该方案,其中mobilephone
为方案,而我的应用程序标识符为Identifier。
这在模拟器上效果很好。当我在iPhone 8模拟器上运行两个应用程序时,我可以打开测试仪,尝试打开URL,它会切换到处理程序应用程序并显示消息框。到目前为止一切顺利。
但是随后我将两个应用程序都部署到了运行iOS 12.3.1的真实iPhone 8手机上,并且未处理该URL。测试器应用从false
报告UIApplication.shared.open
,并且处理程序应用未启动。我想我缺少一些注册部分,但无法弄清楚。有什么帮助吗?
编辑:似乎当我将方案更改为某个随机名称时,它可以正常工作……mobilephone
方案是否以某种方式保留?我在保留方案列表中没有看到它。
答案 0 :(得分:2)
您可能无法注册这样的URL。它由“电话”应用程序注册。
您可以通过进入Safari并键入:mobilephone://test
来分辨。它将提示您打开“电话”应用程序,然后说:“ Safari无法打开该URL,因为它无效”。
编辑:自iOS 10+起,该URL不再有效。。这是被阻止的URL列表(以及打开的设置更新):http://appcofe.blogspot.com/2016/10/apple-blocked-41-app-url-scheme-on-ios_18.html
在iPhone X(NQAJ2LL / A)-iOS 12.2(16E227)上进行了测试
答案 1 :(得分:0)
尝试server {
listen 443;
...
location / {
proxy_pass http://app;
proxy_pass_header Set-Cookie;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
send_timeout 120;
error_page 404 = @cms;
proxy_intercept_errors on;
}
location @cms {
proxy_pass http://cms;
proxy_pass_header Set-Cookie;
proxy_set_header Host $host:8081;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Scheme on;
# not working
proxy_set_header App-Cookies $http_set_cookie;
proxy_redirect http:// $scheme://;
}
}