【问题标题】:Xamarin forms phone call is not working on iOSXamarin 表单电话无法在 iOS 上运行
【发布时间】:2018-12-04 12:54:37
【问题描述】:

我有以下代码,我正在尝试拨打电话。它适用于 Android,但不适用于 iOS!

  private void Call_Clicked(object sender, EventArgs e)
    {
        //var phoneDialer = CrossMessaging.Current.PhoneDialer;
        //if (phoneDialer.CanMakePhoneCall)
        //    phoneDialer.MakePhoneCall("+9611578268");
        Device.OpenUri(new Uri("tel:738284739"));
    }

我尝试了注释和未注释的代码,都没有工作。有什么建议吗?

【问题讨论】:

  • 你在真机上试过了吗?这在模拟器中没有实现
  • 我在真实的安卓设备上试用过,效果很好!
  • 您是否在 iOS 的真实设备上尝试过?
  • 你应该能够在真实设备上调试它,iOS 也无需去商店。无论如何,我的意思是:“开放式手机应用程序”在 iOS 模拟器上不可用,因为 Apple 没有实现它。这就是它似乎不起作用的原因。在真正的设备上,我很有信心它会工作
  • @mohammad anouti 您无需将应用程序放在 App Store 上进行测试。您可以在调试时对其进行测试,并且它是免费的。您可以参考:Xamarin.iOS App Distribution。同样,电话无法在 iOS 模拟器上运行,您需要在真实设备中进行测试。

标签: ios xamarin.forms phone-call


【解决方案1】:

您应该在本机级别使用依赖服务,因为预制将很高并且易于管理本机 API。请检查下面的实现,它将对您有所帮助。

在你的 PCL 项目中创建接口-

 public interface ICall
 {
   bool OpenCallAction(string phoneNumber);
 } 

在你的 IOS 原生项目中创建类-

public class ICallService : ICall
{
    public bool OpenCallAction(string phoneNumber)
    {
        var number = new Uri(String.Format("tel:{0}", phoneNumber));
        return UIApplication.SharedApplication.OpenUrl(number);
    }
 }

在您的 Android 原生项目中创建类-

public class ICallService : ICall
{

    public bool OpenCallAction(string phoneNumber)
    {
        var number = new Uri(String.Format("tel:{0}", phoneNumber));
        return true;
    }

在PCL项目中调用依赖服务ViewModel/View

 DependencyService.Get<ICall>().OpenCallAction("738284739")

【讨论】:

  • 未处理的异常:System.NullReferenceException:对象引用未设置为对象的实例,在调用 OpenCallAction 时它给出了我的空引用异常
  • 你能把代码粘贴到你得到异常的地方吗?如何实现依赖服务请看这里-docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…
  • 是的,@DineshPhalwadiya 是正确的错过了代码谢谢
  • 欢迎@Pratius
猜你喜欢
  • 1970-01-01
  • 2018-03-01
  • 2019-06-30
  • 2017-04-07
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
相关资源
最近更新 更多