На платформе Android:
Демонстрационный проект здесь
Создание подключаемых модулей 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>
Со стороны 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