iOS手机链接打开消息应用程序,而不是拨打该号码

pkbketx9  于 2023-03-20  发布在  iOS
关注(0)|答案(3)|浏览(117)

我想从TextView中获得一个电话号码,以便在单击时呼叫该电话号码:

我面临的问题是,当点击链接时,消息应用反而打开了,我在iOS 12中尝试了以下代码,效果和预期的一样,但当我在iOS 13和14上尝试时,消息应用打开了,而不是使用“电话拨号器应用”拨打电话。
暂定1:

textView.Editable = false;
textView.DataDetectorTypes = UIDataDetectorType.PhoneNumber;

暂定2:

var phoneNumberLink = new Dictionary<string, string>(){ { "(855) 757-7328","tel:8557577328" } }
textView.Editable = false;
textView.SetAttributedTextForLinks("Please call us at (855) 757-7328", phoneNumberLink);
abithluo

abithluo1#

实际上telpromt://0123456789也不行,我必须拦截与URL的交互,推荐的ShouldInteractWithUrl不起作用(ShouldInteractWithUrl没有被触发或调用),所以我必须使用AllowUrlInteraction代替,代码如下:

var description = new KiteEmbeddedLinkTextView()
{
    Editable = false,
    DataDetectorTypes = UIDataDetectorType.PhoneNumber,
    Text = message.MessageText
};
description.AllowUrlInteraction += AllowUrlInteraction;

private bool AllowUrlInteraction(UITextView textView, NSUrl url, NSRange characterRange, UITextItemInteraction interaction)
{
    UIApplication.SharedApplication.OpenUrl(url);
    return false;
}

出于某种原因,除了这一个,之前的选择对我都不起作用。
参见:https://forums.xamarin.com/discussion/60345/uitextview-and-clickable-phonenumbersHow to intercept click on link in UITextView?

mftmpeh8

mftmpeh82#

如上所述https://forums.xamarin.com/discussion/33798/open-phone-dialer-from-app
打开拨号器的正确方法是

telprompt://0123456789

确保没有空格。

ezykj2lf

ezykj2lf3#

我也遇到了同样的问题:QA人员说她无法显示呼叫操作表,但我无法显示消息对话框。
事实证明,如果你没有登录iCloud,点击UITextView上的链接的默认行为是打开消息应用对话框

结论

只需在手机上登录iCloud,tel方案URI就会正常工作。
如果有特殊需要,确保即使用户未登录iCloud(因为大多数用户都已登录),也会显示呼叫操作表,请自行处理并在UITextViewDelegate.textView(_:shouldInteractWith:in:interaction:)中处理。

相关问题