我在iOS代码中使用DependencyService拨打Xamarin Forms应用程序中的电话号码,如下所示:
var url = new NSUrl ("tel:" + phoneNumber);
if (!UIApplication.SharedApplication.OpenUrl (url)) {
var av = new UIAlertView ("Not supported",
"Scheme 'tel:' is not supported on this device",
null,
"OK",
null);
av.Show ();
};
注意我使用tel
而不是telprompt
。
我在iPhone 6和iPhone 4上测试过,它按预期工作。但是,在iPhone 6S上,它会弹出一个如下所示的确认对话框(截图来自互联网,而非我的应用):
根据this question的答案,从应用中拨打号码不应该显示任何对话框,只有在从Safari内拨号时才显示,{{3} }:
tel URL方案用于在iOS设备上启动Phone应用程序并启动拨打指定的电话号码。当用户点击网页中的电话链接时,iOS会显示一条警告,询问用户是否确实要拨打电话号码并在用户接受时启动拨号。 当用户在本机应用中打开带有tel方案的URL时,iOS不会显示警报并启动拨号而不会进一步提示用户。但是,可以将本机应用程序配置为显示自己的警报
然而,这款手机上的应用程序正在发生这种情况。据我所知,没有配置更改或第三方软件正在实现这一点。这是一个问题,因为我已经弹出了我自己的确认对话框,因此要求用户确认两次。如果我删除了我的对话框,那么在其他手机上就不会有任何确认对话框,这也是不可接受的。另一个令人烦恼的是,它表明该设备不支持""消息,如果用户点击取消,这是错误的,所以我将不得不将其更改为更模糊和通用的东西。一种解决方法可能是使用telprompt
代替始终显示对话框,并删除我自己的对话框,但我不想这样做,因为我还需要在对话框中显示其他一些东西,所以我想要有一个自定义的。
如何停止显示此呼叫确认对话框,或者如果不可能,我该如何检测它是否会出现,以至于我无法自动弹出?