我很高兴在这里见到你在本教程中,我们将探讨Xamarin中两个非常重要的功能:如何管理电话拨号器和如何发送短信。我们将学习如何通过Xamarin.Essentials为我们提供的API来使用它们。
如今,在我们的应用程序中整合电话和短信互动是非常有用的,这样做出来的产品至少能覆盖用户的基本功能。这样一来,用户就可以留在应用程序中,而不需要为了发信息或打电话而退出应用程序。
在过去,我们以前不得不添加两个NuGet包–一个用于通话,一个用于短信–这很复杂,也很耗时。现在,我们可以用更简单的方式创建一个电话拨号器。让我们先来解释一下如何使用电话拨号器,然后是短信。
什么是Xamarin.Essentials?
Xamarin.Essentials为你的移动应用程序提供了一个跨平台的开发者API,并允许我们在整个Xamarin Forms环境、Android、iOS或UWP中开发。
很好!那么Xamarin.Essentials提供了哪些功能/API?有几个,如短信、加速器、电话拨号器、偏好等。如果你想了解所有这些功能以及如何实现每个功能,我推荐这篇文章,在这里你会得到每个功能的特点指南。
在特定平台上设置Xamarin.Essentials
要知道,Xamarin.Essentials支持的最低版本是Android 4.4,对应于API级别19,但构建的目标Android版本必须是9.0或10.0,对应于API级别28和级别29。
如果你是最新版本,Xamarin.Essentials已经被添加到你的项目中,所以此时你不需要额外的配置。
如果你有一个旧版本,并且Xamarin.Essentials工作得不好,你可以在文档中检查你的实现是否一切正常。
开始使用Xamarin.Essentials
平台设置
在某些情况下,每个平台都需要额外的设置以使实现有效。在这种情况下,只需要对Android进行配置。让我们来设置使用电话拨号器和短信所需的所有配置。
首先,从你的安卓项目中打开MainActivity.xml文件,在清单节点里面,添加以下代码。
电话拨号器。
<queries>
<intent>
<action android:name="android.intent.action.DIAL" />
<data android:scheme="tel"/>
</intent>
</queries>
复制代码
短信。
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="smsto"/>
</intent>
</queries>
复制代码
验证你的目标Android版本很重要。要做到这一点,只需遵循接下来的步骤。
如上图所示,请应用以下步骤。
- 转到你的安卓项目
- 在项目中右键单击并进入选项
- 转到安卓应用
- 转到目标安卓版本,并将 “安卓9.0″(API级别28)设置为默认值
如果你的目标安卓版本设置为安卓11,你必须用新包可见性要求使用的查询来更新你的安卓清单。
iOS和UWP都不需要额外的设置。
用Xamarin.Essentials拨打电话
为了拨打电话,我们有一个PhoneDialer
类,它允许我们打开电话号码拨号器。
在内部,当我们使用这个API时,它会根据电话号码的来源国对其进行格式化,以便在电话键盘上显示出来。
让我们看看要实现的结构。
首先,我们创建一个可以接收电话号码参数的调用方法,其名称为PlacePhoneCall
。接下来,我们添加这个解释中最重要的类,也就是PhoneDialer
。这个类允许我们打开手机的数字键盘。
最后,通过Open
方法,我们添加我们希望在数字键盘被打开时显示的电话号码。(我们已经在名为PlacePhoneCall
的父方法中询问了这个信息)。
下面是代码示例。
public void PlacePhoneCall(string number)
{
PhoneDialer.Open(number);
}
复制代码
完成了!我们的电话拨号器已经准备好了!
用Xamarin.Essentials发送短信
SMS
类允许我们通过ComposeAsync
方法打开留言板,该方法接收一个SmsMessage
值作为参数。
短信接收主体和收件人的值,像这样。
现在我们来看看图形结构。
在这个例子中,我们创建了SendSms
方法,在这个方法中我们可以添加发送短信的类。我们将收到短信文本和收件人的参数。
在之前创建的方法中,我们添加了Sms
类,它负责用所需的文本打开留言板。
最后,我们添加了ComposeAsync
方法,它将接收你想要呈现的信息。请注意,我们使用的是一个异步方法。如果你想知道关于这个话题的更多信息,请查看这篇文章。
注意,消息变量的类型是
SmsMessage
,它负责接收消息的文本。稍后,收件人将在ComposeAsync
方法中被发送。你将在下面添加的代码实现中看到这个例子。
这里有一个代码例子。
public async Task SendSms(string messageText, string recipient)
{
var message = new SmsMessage(messageText, new []{ recipient });
await Sms.ComposeAsync(message);
}
复制代码
如果你想向一个以上的用户发送短信,你可以!要做到这一点,你必须用一个字符串数组来改变参数类型。
public async Task SendSms(string messageText, string[] recipients)
{
var message = new SmsMessage(messageText, recipient );
await Sms.ComposeAsync(message);
}
复制代码
完成了!我们的短信已经准备好了! 谢谢你的阅读!
The postUsing Xamarin.Essentials to manage phone calls and SMSappeared first onLogRocket Blog.