gil*_*rto 1 notifications android azure firebase xamarin.forms
我正在尝试升级到最新的 android/firebase sdk,此示例https://github.com/xamcat/mobcat-samples/tree/master/notification_hub_backend_service
我面临一些已弃用的函数,并在下面的代码中得到此异常
Java.Lang.NoSuchMethodException Message=getToken []
非常清楚,但我不知道如何获取令牌
public void OnSuccess(Java.Lang.Object result)
{
DeviceInstallationService.Token = result.Class.GetMethod("getToken").Invoke(result).ToString();
}
Run Code Online (Sandbox Code Playgroud)
编辑:MainActivity.cs
using System;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Plugin.CurrentActivity;
using Xamarin.Forms;
using AppCliente.Services.LogOn;
using Android.Content;
using Microsoft.Identity.Client;
using AppCliente.Services.NotificationHub;
using AppCliente.Droid.Services;
using Firebase.Iid;
using Firebase;
using Firebase.Installations;
using Firebase.Messaging;
namespace AppCliente.Droid
{
[Activity(Label = "AppCliente", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = false, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, Android.Gms.Tasks.IOnSuccessListener
{
IPushDemoNotificationActionService _notificationActionService;
IDeviceInstallationService _deviceInstallationService;
IPushDemoNotificationActionService NotificationActionService
=> _notificationActionService ??
(_notificationActionService =
ServiceContainer.Resolve<IPushDemoNotificationActionService>());
IDeviceInstallationService DeviceInstallationService
=> _deviceInstallationService ??
(_deviceInstallationService =
ServiceContainer.Resolve<IDeviceInstallationService>());
protected override void OnCreate(Bundle savedInstanceState)
{
CrossCurrentActivity.Current.Init(this, savedInstanceState);
DependencyService.Register<IParentWindowLocatorService, AndroidParentWindowLocatorService>();
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Bootstrap.Begin(() => new DeviceInstallationService());
FirebaseApp.InitializeApp(this);
if (DeviceInstallationService.NotificationsSupported)
{
FirebaseInstallations.GetInstance(Firebase.FirebaseApp.Instance).GetId().AddOnSuccessListener(this);
}
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
Syncfusion.XForms.Android.PopupLayout.SfPopupLayoutRenderer.Init();
LoadApplication(new App());
ProcessNotificationActions(Intent);
App.UIParent = this;
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data);
}
protected override void OnNewIntent(Intent intent)
{
base.OnNewIntent(intent);
ProcessNotificationActions(intent);
}
public void OnSuccess(Java.Lang.Object result)
{
DeviceInstallationService.Token = result.Class.GetMethod("getToken").Invoke(result).ToString();
}
void ProcessNotificationActions(Intent intent)
{
try
{
if (intent?.HasExtra("action") == true)
{
var action = intent.GetStringExtra("action");
if (!string.IsNullOrEmpty(action))
NotificationActionService.TriggerAction(action);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
今天我遇到了同样的错误并修复了它
在MainActivity.cs中更改此设置
public void OnSuccess(Java.Lang.Object result)
{
DeviceInstallationService.Token = result.Class.GetMethod("getToken").Invoke(result).ToString();
}
Run Code Online (Sandbox Code Playgroud)
进入这个
public void OnSuccess(Java.Lang.Object result)
{
DeviceInstallationService.Token = result.ToString();
}
Run Code Online (Sandbox Code Playgroud)
令牌是从结果中获取的字符串,GetMethod("getToken")
但似乎不再是这种情况,并且该getToken
方法已被删除。
归档时间: |
|
查看次数: |
277 次 |
最近记录: |