SMS – Xamarin.Forms

Neste artigo veremos como implementar o envio de SMS em suas aplicações Xamarin.Forms.

 

ADICIONANDO O NUGET PACKAGE

Clique com o botão direito em cima de sua Solution e selecione “Manage NuGet Packages for Solution…”.

1

 

 

Digite “Xam.Plugins.Messaging” e selecione o plugin como demonstrado na imagem a seguir.

2

 

 

Selecione todos os projetos e clique no botão “Install”.

2

 

 

Xaml

Crie um Entry para o usuário informar o número de telefone do destinatário, outro para escrever a mensagem desejada e um Button para chamar o método Send.

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:DemoSMS"
x:Class="DemoSMS.MainPage">
<StackLayout VerticalOptions="StartAndExpand">
<Label Text="Number:"/>
<Entry x:Name="Number" Keyboard="Telephone"/>
<Label Text="Message:"/>
<Entry x:Name="Message" />
<Button Text="SEND" Clicked="Send"/>
</StackLayout>
</ContentPage>

view raw
MainPage.xaml
hosted with ❤ by GitHub

 

 

C#

Referencie o plugin Messaging e crie um “CrossMessaging.Current.SmsMessenger”, utilize os métodos CanSendSms para verificar se o dispositivo suporta enviar SMS e SendSms para realizar o envio.

using System;
using Plugin.Messaging;
using Xamarin.Forms;
namespace DemoSMS
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Send(object sender, EventArgs e)
{
var smsMessenger = CrossMessaging.Current.SmsMessenger;
if (smsMessenger.CanSendSms)
smsMessenger.SendSms(Number.Text, Message.Text);
}
}
}

view raw
MainPage.xaml.cs
hosted with ❤ by GitHub

 

 

Android

Edite o arquivo AndroidManifest.xml e adicione o provider e meta-data como demonstrado a seguir.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.DemoSMS" android:installLocation="auto">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27" />
<application android:label="DemoSMS.Android">
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.companyname.DemoSMS.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
</application>
</manifest>

view raw
AndroidManifest.xml
hosted with ❤ by GitHub

Observação: Lembre-se de substituir o texto “com.companyname.DemoSMS” pelo nome do pacote da sua aplicação.

Dentro da pasta “Resources” crie uma pasta chamada xml e  adicione um arquivo chamado file_paths.xml, como demonstrado a seguir.

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>

view raw
file_paths.xml
hosted with ❤ by GitHub

 

Envio em Background (Android)

Por padrão o plugin abre o aplicativo responsável por enviar SMS já com as informações preenchidas, se você deseja que o plugin já realize o envio automaticamente é necessário:

1 – Adicione as seguintes permissões no AndroidManifest

  • READ_PHONE_STATE
  • SEND_SMS

 

2 – Utilize os métodos CanSendSmsInBackground para verificar se o dispositivo suporta enviar SMS em Background e SendSmsInBackground para realizar o envio.

private void Send(object sender, EventArgs e)
{
var smsMessenger = CrossMessaging.Current.SmsMessenger;
if (smsMessenger.CanSendSmsInBackground)
smsMessenger.SendSmsInBackground(Number.Text, Message.Text);
}

view raw
CodeBackgroundSMS.cs
hosted with ❤ by GitHub

 

Resultado

ezgif.com-gif-maker (10)

 

 

Esse e todos os exemplos deste blog encontram-se disponíveis no GitHub.

icongithub

2 comentários em “SMS – Xamarin.Forms

  1. Meus parabéns pelo trabalho árduo e continuo. Preciso saber como receber e ler uma SMS usando o Xamarin.Forms?

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s