java - 如何为 Android 设备统一实现 FCM 推送通知,即使游戏被终止也能正常工作

标签 java c# android unity-game-engine plugins

我想为在 unity3D 中开发的 Android 游戏实现 Firebase 推送通知,即使游戏没有在后台运行,该通知也能正常工作。专家在许多论坛中建议您需要创建一个 Android 插件,让服务始终在后台运行,例如

public class MyFirebaseMessagingService extends FirebaseMessagingService {
public static String TAG = "PUSH";

@Override
public void onCreate() {
    super.onCreate();
    Log.e("PUSH","FCM Service started");
}

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
   Log.e("PUSH","Push received");
   UnityPlayer.UnitySendMessage("Canvas", "PushReceived", "This is your push message");
}
}

该服务将接收 Push 通知,并通过调用这样的 C# 方法来通知 Unity3D 游戏。

UnityPlayer.UnitySendMessage("Canvas", "PushReceived", "This is your push message");

然后创建该项目的.AAR 文件并将其放置在\Assets\Plugins\Android 中。 我遵循相同的策略,但 unity3D 从未收到推送。 这是我的插件的 list 文件。

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <service
        android:name=".MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
    <service
        android:name=".MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
</application>

这对我不起作用。然后,我创建另一个 list 文件并将其放在 asset/Plugins/Android/AndroidManifest.xml 下,并在该文件中添加服务标记,但这种解决方法没有结果。

我怎样才能实现这个目标?我已经尝试这个一个多星期了,但还没有成功。任何帮助都将非常感激。

最佳答案

我成功解决了这个问题。对于这个问题,我的理解存在分歧。我正在使用该库实现 firebase 并在同一库包上创建 firebase 项目,但正确的方法是在库/插件中仅拥有两个服务 MyFirebaseInstanceIDServiceMyFirebaseMessagingService ,而没有其他服务。然后在另一个 Android 应用程序或 Unity 游戏中,我实现了 firebase 并在控制台上创建了一个 firebase 项目,并在 list 中引用了 Library/plugin/.AAR 中的服务。

这就是我解决这个问题的方法。现在的下一个挑战是,当统一应用程序关闭时,服务就会停止。

关于java - 如何为 Android 设备统一实现 FCM 推送通知,即使游戏被终止也能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45409791/

相关文章:

c# - 网络浏览器窃取焦点

c# - 嵌套的 Parallel.For() 循环速度和性能

java - Expandablelistview 中的奇怪行为 - Android

java - JSoup 抓取 HTML 值返回 null?

java - 独特元素的过滤器列表

java - 如何临时更改 System.out 属性

c# - 如何防止 RadioGroup 尝试将 SelectedItem 设置为焦点?

java - 如何使用多线程处理存储在本地磁盘中的大量文件(使用文件锁)

android - 普通dp如何支持大屏?

java - Android - 使用标志 Activity 单击推送通知后打开或重新启动应用程序