Firebase 推送通知在 Xamarin 中不起作用

Firebase Push Notification not working in Xamarin

我观看了 Gerald Versluis 关于使用 Xamarin.Forms (Android) 和 FCM 推送通知的教程。 Video tutorial and source code github

我尝试并下载了源代码,更改了包名称,我只是用我在 Firebase 云消息传递上生成的代码替换了 google-services.json 代码。但是它不起作用,事件 Current_OnTokenRefresh 从未触发,所以我不知道令牌。当然,没有任何通知。我哪里错了?

我在 Genymotion - SS Galaxy S8 上使用模拟器。此模拟器上没有 Google Play 商店。

确保您的 google-services.json 构建操作设置为 GoogleServicesJson,或者您可以简单地在 android .csproj 文件中添加 "<GoogleServicesJson Include="google-services.json" />"

第 1 步: 确保在 MainAcvtivit.cs 中为您的 Android 项目设置 reset token = true。 我就是这样做的。

//If debug you should reset the token each time.
#if DEBUG
            FirebasePushNotificationManager.Initialize(this, true);
#else
            FirebasePushNotificationManager.Initialize(this, false);
#endif

这是您的 OnTokenRefresh,它应该被触发:

CrossFirebasePushNotification.Current.OnTokenRefresh += (s, p) =>
            {
                Debug.WriteLine($"REC TOKEN : {p.Token}");
            };

第 2 步: Duble 检查“google-services.json”的“build acion”是否设置为“GoogleServicesJson”

第 3 步: 检查您是否已为您的应用授予这些基本权限。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pusher.pushnotifications" >
<permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:fullBackupContent="@xml/backup_rules">
    <receiver
        android:name="com.pusher.pushnotifications.reporting.FCMMessageReceiver"
        android:permission="com.google.android.c2dm.permission.SEND"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="${applicationId}" />
        </intent-filter>
    </receiver>

    <service
        android:name="com.pusher.pushnotifications.fcm.EmptyMessagingService">
        <intent-filter android:priority="1">
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>

    <provider
        android:authorities="${applicationId}.pushnotificationsinitprovider"
        android:name="com.pusher.pushnotifications.internal.PushNotificationsInitProvider"
        android:exported="false"
        android:initOrder="99" />

    <activity android:name="com.pusher.pushnotifications.reporting.OpenNotificationActivity">
        <intent-filter>
            <action android:name="com.pusher.pushnotifications.OPEN_TRACKING" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>