别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述为什么我不能注册我的Android设备? xam.pushnotification相关的知识,希望能为你提供帮助。
我在我的xamarin.forms项目中使用xam.plugin.pushnotification
我的主要活动
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
//inicializa imageCircle
ImageCircleRenderer.Init();
//inicializa o mapa
global::Xamarin.FormsMaps.Init(this, bundle);
//shared Preferences
App.Init(new androidUserPreferences());
//Gerenciador de memória
CachedImageRenderer.Init();
try
{
AppContext = this.ApplicationContext;
CrossPushNotification.Initialize<
CrossPushNotificationListener>
("my sender");
StartPushService();
}
catch (Exception e)
{
var s = e.Message;
}AndroidUserPreferences sharedPref = new AndroidUserPreferences();
if ( sharedPref.GetString("token") == " ")
{
GetTokenTask myTask = new GetTokenTask();
myTask.Execute(this);
}LoadApplication(new App());
}public static void StartPushService()
{
AppContext.StartService(new Intent(AppContext, typeof(PushNotificationService)));
if (Android.OS.Build.VERSION.SdkInt >
= Android.OS.BuildVersionCodes.Kitkat)
{PendingIntent pintent = PendingIntent.GetService(AppContext, 0, new Intent(AppContext, typeof(PushNotificationService)), 0);
AlarmManager alarm = (AlarmManager)AppContext.GetSystemService(Context.AlarmService);
alarm.Cancel(pintent);
}
}public static void StopPushService()
{
AppContext.StopService(new Intent(AppContext, typeof(PushNotificationService)));
if (Android.OS.Build.VERSION.SdkInt >
= Android.OS.BuildVersionCodes.Kitkat)
{
PendingIntent pintent = PendingIntent.GetService(AppContext, 0, new Intent(AppContext, typeof(PushNotificationService)), 0);
AlarmManager alarm = (AlarmManager)AppContext.GetSystemService(Context.AlarmService);
alarm.Cancel(pintent);
}
}
我的听众在我的pcl中
public classCrossPushNotificationListener : IPushNotificationListener
{public void OnMessage(JObject values, DeviceType deviceType)
{
Debug.WriteLine("Message Arrived");
}public void OnRegistered(string token, DeviceType deviceType)
{
Debug.WriteLine(string.Format("Push Notification - Device Registered - Token : {0}", token));
}public void OnUnregistered(DeviceType deviceType)
{
Debug.WriteLine("Push Notification - Device Unnregistered");
}public void OnError(string message, DeviceType deviceType)
{
Debug.WriteLine(string.Format("Push notification error - {0}",message));
}public bool ShouldShowNotification()
{
return true;
}
}
}
在app.cs(PCL)中注册(尝试LOL)
public App()
{
InitializeComponent();
CrossPushNotification.Current.Register();
MainPage = new NavigationPage(new Views.Splash2());
}
我使用包名在firebase中注册了我的项目,然后我在那里创建了一个项目,并获得了发件人ID ...但是......在调用“cross ... current.register()”之后的某个地方(它没有显示)我在哪里),我有一个例外
FATAL UNHANDLED EXCEPTION:System.TypeLoadException:无法使用标记0100005a解析类型(来自typeref,类/程序集Android.Gms.Gcm.Iid.InstanceID,Xamarin.GooglePlayServices.Gcm,Version = 1.0.0.0,Culture = neutral,PublicKeyToken =空值)我需要在我的pcl项目中安装xamarin.gcm吗?现在它只在我的android项目中
答案尝试将
CrossPushNotification.Current.Register ();
调用为OnCreate
方法。像这样:protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
//inicializa imageCircle
ImageCircleRenderer.Init();
//inicializa o mapa
global::Xamarin.FormsMaps.Init(this, bundle);
//shared Preferences
App.Init(new AndroidUserPreferences());
//Gerenciador de memória
CachedImageRenderer.Init();
try
{
AppContext = this.ApplicationContext;
CrossPushNotification.Initialize<
CrossPushNotificationListener>
("my sender");
//call register method here
CrossPushNotification.Current.Register();
StartPushService();
}
catch (Exception e)
{
var s = e.Message;
}AndroidUserPreferences sharedPref = new AndroidUserPreferences();
if ( sharedPref.GetString("token") == " ")
{
GetTokenTask myTask = new GetTokenTask();
myTask.Execute(this);
}LoadApplication(new App());
}
另一答案我不得不迁移到1.2.5-beta,它确实有效,但插件最近宣布为DEPRECATED。 这是个坏消息。
为了支持monoandroid80,我不得不分叉xam.plugin.pushnotification并手动更新其packages.config。
【为什么我不能注册我的Android设备( xam.pushnotification)】很快就会有其他选择,只能迁移。
推荐阅读
- 如何将数据从服务器发送到Android()
- Android(无法获取Android设备4.1.1的注册ID返回“java.io.IOException:SERVICE_NOT_AVAILABLE”)
- 如何在Chrome,Safari和Firefox中启用TLS 1.3()
- 如何在Apache,Nginx和Cloudflare中启用TLS 1.3()
- 如何在Apache和Nginx中启用CORS()
- 如何像黑客一样分析你的网站以查找漏洞()
- 安全最佳实践–构建可靠的Docker容器
- 13个用于性能和配置更改的DNS监视工具
- 适用于小型企业网站的十大基于云的DDoS保护