どのようにxamarinを使用してSMSの読み取りアクセス許可なしにAndroidのOTPを確認する方法.フォーム?
11459 ワード
このブログでは、AndroidでOTPを検証する方法について説明します.フォーム.今ではほとんどのモバイルアプリケーションのユーザーのOTP登録を使用します.ユーザーがOTPを入力し、アプライアンスにアクセスできるように.しかし、SMSが自動的に入力せずにユーザーアプリケーションに設定される場合、それは狂っている場合には、OTPを同等のデバイス上で受信する必要があります.
AndroidのマニフェストファイルにReadRain SMSのアクセス許可を提供することで、LocalboardCastManagerを使用してOTPを取得します.しかし、問題は、Google Playは私たちがそれらを伝えることなく、なぜ私たちはユーザーに携帯電話からSMSを読むためにReadRange SMSのアクセス許可を提供していることを許可しませんでした.Google Playは、あなたのアプリケーションがスパイアプリケーションであるかもしれないと思います.だから、Googleはいくつかの質問を、なぜ我々はReadRange SMSのアクセス許可を提供します.現在、すべての認証はOTPベースです.誰でもあなたのOTPメッセージを盗むことができるように.ユーザーを保護するために、GoogleはSMSレトリーバーAPIを提供します.しかし、我々はユーザーのデバイスからOTPメッセージを読むためのSMS
XAmarinを使用してSMS読み取り許可なしにAndroidでOTPを確認するこれらの手順に従ってください.フォーム
ステップ1:AndroidアプリケーションでXamarinプロジェクトを作成します.
Step 2 :プロジェクトを作成した後、ソリューションエクスプローラーのプロジェクト名をクリックし、パッケージをインストールするには、Manuple Nugetパッケージを右クリックして選択します.
Googleプレイサービスパッケージのインストール.
イメージ2 :インストール許可
ステップ3:パッケージのインストール後、入力し、OTP番号を提出するためのユーザーインターフェイスを作成します.
ファイル名:メインページ.XAML
DependencyServiceは、アプリケーションが共有コードからプラットフォーム固有の機能を呼び出すことができます.この機能はxamarinを許します.アプリケーションは、ネイティブアプリケーションが行うことができるすべてをテストするアプリケーションです.プラットフォームの特定の機能と対話する方法を定義するインタフェースを設計する必要があります.ここで、OTP読書はAndroidプラットホームを支持するだけです、そして、IOSは自動補完をサポートします、それで、SMSコレクタに集中するためにAdependencyServiceインターフェースをつくってください.CommonServiceの新しいクラスとインターフェイスを作成します.
続きを読む:Hybrid Mobile App Development - Xamarin Or Telerik AppBuilder
これでフォルダ依存関係を作成し、依存ファイルを保存します.
ファイルの種類
コード
ザマリンFormSessageGingCenterでは、異なるコンポーネントが単純なメッセージングコンベンションの外部で認識せずに通信できます.MessageingCenterは、静的なクラスであるかもしれません.
購読:特定の署名とメッセージを聞いて、特定のアクションを受け取るときにそれらを受け取る.複数の加入者は同じメッセージを聞くことができます.
送信:リスナーのためのメッセージを投稿する.購読されていないリスナーがなければ、メッセージは無視されます.
ファイル名: utils .cs
コード
ファイルの種類
後ろのコードは加入者メッセージリスナーを加えます、そして、メッセージがメールアプリケーションから特定の形式で受け取られるなら、メッセージは通知されて、エントリーコントロールにOTP値を読み込んで、割り当てます.
ファイル名:
メインページ.XAMLCSコード
Androidプロジェクトに依存関係を作成することから始めましょう.あなたがxamarinを加えなかったならば.グーグルプレイサービス.AuthUnuGetパッケージを作成し、インスタンスを作成する前に追加します.
対応するSMSメッセージのリスニングを開始するために使用されるサンプルsmsReseareClientを取得します.
smsReetEventClientクライアント= smsLetterクライアント.getclient (アプリケーションコンテキスト)
タイムアウト(5分)までのSMSの対応SSMSを待って起動します.対応するSMSメッセージは送信の意図で送信されます.
ファイル名: listentomessage.cs
コード
ステップ9
BroadCastReceiveはsmsReadEverClientからAPI放送を聞きます.上記のSMSのレトリバーは、目的のフィルタスマットリーを提供しています.smsBroadcast受信機を呼び出し、それを使ってブロードキャスト受信機を記録します.
ファイルの種類
ハッシュチェーンは、アプリケーションのパッケージ名とアプリケーションの公開鍵証明書で構成されます.ハッシュコードを生成するには、次のC≧メソッドを実行してSMSメッセージに含まれるハッシュを生成します.
ハッシュキーを作成し、OTPメッセージに追加する必要があります.正しいハッシュなしで、あなたのアプリケーションはメッセージ通知を受けません.ハッシュキーは作成され、アプリケーションごとに1回格納されます.次に、このヘルパークラスをコードから削除し、ネイティブのAndroidプロジェクトで新しいクラスを作成できます.
ファイルの種類
このブログでは、Xamarinを使ってAndroidでOTPを検証せずにコードを実装する方法を説明しました.フォーム.まず、依存関係サービス、ブロードキャスト、キーヘルパー、メッセージングセンターのクラスを作成するよりも、Google Playサービスの認証パッケージをインストールできます.OTPを自動的に読んで、ユーザーは簡単にSMS経由で検証フローを完了することができます.
AndroidのマニフェストファイルにReadRain SMSのアクセス許可を提供することで、LocalboardCastManagerを使用してOTPを取得します.しかし、問題は、Google Playは私たちがそれらを伝えることなく、なぜ私たちはユーザーに携帯電話からSMSを読むためにReadRange SMSのアクセス許可を提供していることを許可しませんでした.Google Playは、あなたのアプリケーションがスパイアプリケーションであるかもしれないと思います.だから、Googleはいくつかの質問を、なぜ我々はReadRange SMSのアクセス許可を提供します.現在、すべての認証はOTPベースです.誰でもあなたのOTPメッセージを盗むことができるように.ユーザーを保護するために、GoogleはSMSレトリーバーAPIを提供します.しかし、我々はユーザーのデバイスからOTPメッセージを読むためのSMS
どのようにプロジェクトを作成し、どのようにSMSの読み取り許可なしにAndroidのOTPを確認するには?
XAmarinを使用してSMS読み取り許可なしにAndroidでOTPを確認するこれらの手順に従ってください.フォーム
ステップ1:AndroidアプリケーションでXamarinプロジェクトを作成します.
Step 2 :プロジェクトを作成した後、ソリューションエクスプローラーのプロジェクト名をクリックし、パッケージをインストールするには、Manuple Nugetパッケージを右クリックして選択します.
Googleプレイサービスパッケージのインストール.
イメージ2 :インストール許可
ステップ3:パッケージのインストール後、入力し、OTP番号を提出するためのユーザーインターフェイスを作成します.
ファイル名:メインページ.XAML
<!--?xml encoding="utf-8" version="1.0"-->
<stacklayout>
<stacklayout backgroundcolor="White" horizontaloptions="CenterAndExpand" padding="15" verticaloptions="CenterAndExpand">
<entry placeholder="Enter OTP" placeholdercolor="Black" x:name="otpEntry"></entry><button clicked="Button_Clicked" text="Submit OTP"></button>
</stacklayout>
</stacklayout>
<!--?xml-->
ステップ4 :依存関係サービスDependencyServiceは、アプリケーションが共有コードからプラットフォーム固有の機能を呼び出すことができます.この機能はxamarinを許します.アプリケーションは、ネイティブアプリケーションが行うことができるすべてをテストするアプリケーションです.プラットフォームの特定の機能と対話する方法を定義するインタフェースを設計する必要があります.ここで、OTP読書はAndroidプラットホームを支持するだけです、そして、IOSは自動補完をサポートします、それで、SMSコレクタに集中するためにAdependencyServiceインターフェースをつくってください.CommonServiceの新しいクラスとインターフェイスを作成します.
続きを読む:Hybrid Mobile App Development - Xamarin Or Telerik AppBuilder
これでフォルダ依存関係を作成し、依存ファイルを保存します.
ファイルの種類
コード
using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace DemoOFOTPVerification.Dependency
{
public class CommonMessageServices
{
public static void ListenToSmsRetriever()
{
DependencyService.Get<ilistentomessageretriever><!--?xml version="1.0" encoding="utf-8"-->()?.ListenToMessageRetriever();
}
}
public interface IListenToMessageRetriever
{
void ListenToMessageRetriever();
}
}</ilistentomessageretriever>
ステップ5 :メッセージングセンターザマリンFormSessageGingCenterでは、異なるコンポーネントが単純なメッセージングコンベンションの外部で認識せずに通信できます.MessageingCenterは、静的なクラスであるかもしれません.
購読:特定の署名とメッセージを聞いて、特定のアクションを受け取るときにそれらを受け取る.複数の加入者は同じメッセージを聞くことができます.
送信:リスナーのためのメッセージを投稿する.購読されていないリスナーがなければ、メッセージは無視されます.
ファイル名: utils .cs
コード
iusing DemoOFOTPVerification.Enum;
using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace DemoOFOTPVerification.Utils
{
public static class Utils
{
private static readonly object c1 = new object();
public static void Subscribe<targs>(this object subscriber, SmsDataeventSubscriber, Action<targs>callBack)
{
MessagingCenter.Subscribe(subscriber, eventSubscriber.ToString(), new Action<object, targs="">((e, a) => { callBack(a); }));
}
public static void Notify<targs>(SmsDataeventNotified, TArgs argument)
{
MessagingCenter.Send(c1, eventNotified.ToString(), argument);
}
}
}</targs></object,></targs></targs>
ステップ6 : ENUMフォルダを作成し、このフォルダにenumクラスを保存します.ファイルの種類
using System;
using System.Collections.Generic;
using System.Text;
namespace DemoOFOTPVerification.Enum
{
public enumSmsData
{
SmsRecieved,
}
}
手順7 :コードをmainページに書き込みます.XAMLcsファイル.後ろのコードは加入者メッセージリスナーを加えます、そして、メッセージがメールアプリケーションから特定の形式で受け取られるなら、メッセージは通知されて、エントリーコントロールにOTP値を読み込んで、割り当てます.
ファイル名:
メインページ.XAMLCSコード
using DemoOFOTPVerification.Dependency;
using DemoOFOTPVerification.Enum;
using DemoOFOTPVerification.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace DemoOFOTPVerification
{
public partial class MainPage :ContentPage
{
public MainPage()
{
InitializeComponent();
this.Subscribe<string>(SmsData.SmsRecieved, =>
{
otpEntry.Text = (string);
});
}
private void Subscribe<t>(SmsDatasmsRecieved, Action<object> p)
{
throw new NotImplementedException();
}
private void Button_Clicked(object sender, EventArgs e)
{
CommonMessageServices.ListenToSmsRetriever();
}
}
}</object></t></string>
ステップ8 :依存関係を使用してメッセージを聞く方法.Androidプロジェクトに依存関係を作成することから始めましょう.あなたがxamarinを加えなかったならば.グーグルプレイサービス.AuthUnuGetパッケージを作成し、インスタンスを作成する前に追加します.
対応するSMSメッセージのリスニングを開始するために使用されるサンプルsmsReseareClientを取得します.
smsReetEventClientクライアント= smsLetterクライアント.getclient (アプリケーションコンテキスト)
タイムアウト(5分)までのSMSの対応SSMSを待って起動します.対応するSMSメッセージは送信の意図で送信されます.
ファイル名: listentomessage.cs
コード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using DemoOFOTPVerification.Droid;
using Application = Android.App.Application;
[assembly: Dependency(typeof(ListenToSms))]
namespace DemoOFOTPVerification.Droid.Dependency
{
public class ListenToMessage: IListenToSmsRetriever
{
public void ListenToMessageRetriever()
{
SmsRetrieverClientSMSclient = SmsRetriever.GetClient(Application.Context);
var task1 = SMSclient.StartSmsRetriever();
task1.AddOnSuccessListener(new SuccessListener());
task1.AddOnFailureListener(new FailureListener());
}
private class SuccessListener : Object, IOnSuccessListener
{
public void OnSuccess(Object result)
{
}
}
private class FailureListener : Object, IOnFailureListener
{
public void OnFailure(Exception e)
{
}
}
}
}
計画242479152を雇うか?あなたの検索はここで終わります.ステップ9
BroadCastReceiveはsmsReadEverClientからAPI放送を聞きます.上記のSMSのレトリバーは、目的のフィルタスマットリーを提供しています.smsBroadcast受信機を呼び出し、それを使ってブロードキャスト受信機を記録します.
ファイルの種類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace DemoOFOTPVerification.Droid
{
[BroadcastReceiver(Enabled = true, Exported = true)]
[IntentFilter(new[] { SmsRetriever.SmsRetrievedAction })]
public class SmsReceiver :BroadcastReceiver
{
private static readonlystring[] OtpMessageBodyKeywordSet = { "DevEnvExe Generated OTP" };
public override void OnReceive(Context context, Intent intent)
{
try
{
if (intent.Action != SmsRetriever.SmsRetrievedAction) return;
var bundle = intent.Extras;
if (bundle == null) return;
var status = (Statuses)bundle.Get(SmsRetriever.ExtraStatus);
switch (status.StatusCode)
{
case CommonStatusCodes.Success:
var message = (string)bundle.Get(SmsRetriever.ExtraSmsMessage);
varfoundKeyword = OtpMessageBodyKeywordSet.Any(k =>message.Contains(k));
if (!foundKeyword) return;
var code = ExtractNumber(message);
Utilities.Notify(Events.SmsRecieved, code);
break;
case CommonStatusCodes.Timeout:
break;
}
}
catch (System.Exception)
{
}
}
private static string ExtractNumber(string text)
{
if (string.IsNullOrEmpty(text)) return "";
var number = Regex.Match(text, @"\d+").Value;
return number;
}
}
}
ステップ10 :ハッシュキーヘルパーを使用してキーを生成するハッシュチェーンは、アプリケーションのパッケージ名とアプリケーションの公開鍵証明書で構成されます.ハッシュコードを生成するには、次のC≧メソッドを実行してSMSメッセージに含まれるハッシュを生成します.
ハッシュキーを作成し、OTPメッセージに追加する必要があります.正しいハッシュなしで、あなたのアプリケーションはメッセージ通知を受けません.ハッシュキーは作成され、アプリケーションごとに1回格納されます.次に、このヘルパークラスをコードから削除し、ネイティブのAndroidプロジェクトで新しいクラスを作成できます.
ファイルの種類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace DemoOFOTPVerification.Droid.Helper
{
public class AppHashKeyHelperForSMS
{
private static string HASH_TYPE = "SHA-256";
private static int NUM_HASHED_BYTES = 9;
private static int NUM_BASE64_CHAR = 11;
private static string GetPackageSignature(Context context)
{
PackageManagerpackageManager = context.PackageManager;
var signatures = packageManager.GetPackageInfo(context.PackageName, PackageInfoFlags.Signatures).Signatures;
return signatures.First().ToCharsString();
}
public static string GetAppHashKey(Context context)
{
string keystoreHexSignature = GetPackageSignature(context);
String appInfo = context.PackageName + " " + keystoreHexSignature;
try
{
MessageDigestmessageDigest = MessageDigest.GetInstance(HASH_TYPE);
messageDigest.Update(Encoding.UTF8.GetBytes(appInfo));
byte[] hashSignature = messageDigest.Digest();
hashSignature = Arrays.CopyOfRange(hashSignature, 0, NUM_HASHED_BYTES);
String base64Hash = Android.Util.Base64.EncodeToString(hashSignature, Base64Flags.NoPadding | Base64Flags.NoWrap);
base64Hash = base64Hash.Substring(0, NUM_BASE64_CHAR);
return base64Hash;
}
catch (NoSuchAlgorithmException e)
{
return null;
}
}
}
}
Xamarinアプリ開発会社 結論
このブログでは、Xamarinを使ってAndroidでOTPを検証せずにコードを実装する方法を説明しました.フォーム.まず、依存関係サービス、ブロードキャスト、キーヘルパー、メッセージングセンターのクラスを作成するよりも、Google Playサービスの認証パッケージをインストールできます.OTPを自動的に読んで、ユーザーは簡単にSMS経由で検証フローを完了することができます.
Reference
この問題について(どのようにxamarinを使用してSMSの読み取りアクセス許可なしにAndroidのOTPを確認する方法.フォーム?), 我々は、より多くの情報をここで見つけました https://dev.to/tarungurang/how-to-verify-otp-in-android-without-sms-read-permission-using-xamarinforms-15p9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol