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>
我观看了 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>