Чтение SMS из входящих сообщений в Unity для Android и iOS - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно реализовать небольшой текстовый интерфейс для отображения сообщений OTP MSM из входящих сообщений в Unity.

Кто-нибудь знает, как проверять или отправлять SMS-сообщения в Unity, не открывая приложение SMS по умолчанию?

Я нашел ссылку ниже для отправки сообщения без запуска приложения SMS по умолчанию.Я хочу прочитать SMS-сообщение, чтобы автоматически заполнить OTP для процесса регистрации.Возможно ли это с Unity?

https://gist.github.com/rmdwirizki/87f9e68c7ef6ef809a777eb25f12c3b2

проверка или чтение смс из входящих сообщений в единстве

https://gist.github.com/taesiri/7431660

1 Ответ

0 голосов
/ 07 декабря 2018

На платформе Android:

Демонстрационный проект здесь

  1. Создание подключаемых модулей AAR иБиблиотеки Android .(Вы можете выбрать jar или aar для реализации плагина, с той лишь разницей, что плагин aar содержит ресурсы Android. В этом случае нам нужно добавить разрешение в AndroidManizest.xml, которое может быть помещено в aar и позже будет автоматически объединено Unity)

    Следуйте этой инструкции Создайте библиотеку Android .

    В плагине aar реализуйте BroadcastReceiver, который обрабатывает намерение получения SMS.

    SmsListener.java

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.telephony.SmsMessage;
    
    import com.unity3d.player.UnityPlayer;
    
    public class SmsListener extends BroadcastReceiver {
        private final String UnityCallbackObject = "UnitySMSReceiver";
        private final String UnityCallbackMethod = "OnSMSReceive";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            StringBuilder builder = new StringBuilder();
    
            Object[] objects = (Object[]) intent.getExtras().get("pdus");
            SmsMessage message = null;
            for (int i = 0; i < objects.length; i++) {
                message = SmsMessage.createFromPdu((byte[]) objects[i]);
                builder.append(message.getDisplayMessageBody());
            }
            UnityPlayer.UnitySendMessage(UnityCallbackObject, UnityCallbackMethod, builder.toString());
        }
    }
    

    AndroidManizest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="your.package.name.here">
    
        <uses-permission android:name="android.permission.RECEIVE_SMS" />
        <uses-permission android:name="android.permission.READ_SMS" />
    
        <application>
            <receiver android:name="your.package.name.here.SmsListener" android:enabled="true">
                <intent-filter>
                    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                </intent-filter>
            </receiver>
        </application>
    </manifest>
    
  2. Со стороны Unity поместите сгенерированный файл aar в Assets/Plugins/Android.Создайте объект gameObject с именем UnitySMSReceiver и прикрепите к сцене функцию реализации скрипта OnSMSReceive.

    public void OnSMSReceive (string message) {
        // do something with your SMS message here.
    }
    

    Мои окружения:

    Unity 2017.2.0f3
    
    Android Studio 3.2.1
    

Ссылки:

Тестирование Android смс с эмулятора

Android - прослушивание входящих SMS-сообщений

Как читать SMS-сообщенияпрограммно в Android

Android: программно получать сообщения SMS

Приемник Android Android не работает

Unity3D и выпуск AAR

https://blog.gradle.org/introducing-compile-only-dependencies

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...