如何在Xamarin中获得Firebase云消息令牌?

c8ib6hqw  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(176)

我有一个Xamarin android应用程序,我需要获得Firebase云消息令牌。
我在Android项目中添加了一个包含以下类的文件:

[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
public class MyFirebaseIIDService : FirebaseMessagingService
{
    const string TAG = "MyFirebaseMsgService";
    public override void OnNewToken(string token)
    {
        base.OnNewToken(token);          // << Breakpoint here
        SendRegistrationToServer(token);
    }

    public void SendRegistrationToServer(string token)
    {
        // Do something with the token
    }

}

和我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="13" android:versionName="13.1" package="com.MyApp.app" android:installLocation="internalOnly">
    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="30" />
    
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />

    <application android:label="MyApp" android:icon="@mipmap/launcher_foreground" android:hardwareAccelerated="true" android:debuggable="true">
        <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
        <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="${applicationId}" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

我将应用程序部署到一个模拟设备,但从未到达断点。应用程序已部署并正在运行。
我想知道这段代码是否足够,或者这个类是否必须在其他地方引用。
我知道这段代码只在应用程序安装时运行一次,所以每次我卸载应用程序后再进行测试。
有人知道怎么解决这个问题吗?
谢谢,

erhoui1w

erhoui1w1#

如果你想获得Firebase云消息令牌,你可以使用下面的代码。

var FCMtoken = FirebaseMessaging.Instance.GetToken().GetResult(Java.Lang.Class.FromType(typeof(InstallationTokenResult))).ToString();

此服务MyFirebaseIIDService实现OnTokenRefresh方法,该方法在最初创建或更改注册令牌时调用。
很少调用OnTokenRefresh:它用于在以下情况下更新令牌:

  • 安装或卸载应用程序时。
  • 用户删除应用程序数据时。
  • 当应用程序擦除示例ID时。
  • 当令牌的安全性受到威胁时。

您可以查看MS文档以了解更多详细信息。https://learn.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-fcm?tabs=windows#implement-the-firebase-instance-id-service

相关问题