gpt4 book ai didi

google-cloud-messaging - 设备订阅已过期 - 修复

转载 作者:行者123 更新时间:2023-12-02 04:42:44 25 4
gpt4 key购买 nike

我正在使用 PushSharp 库将推送通知发送到我的 Xamarin.Android 应用程序。每次启动应用程序时,我都会检查 GCM 注册,如果注册过期,我会将设备 token 发送到服务器。有时我得到

Device Subscription Expired Exception

在日志中。由于这个异常,我的设备没有收到通知,有时它会自动解决,我开始收到通知。我不确定发生了什么。如何解决这个问题?

我可以按如下方式处理 DeviceSubscriptionExcpetion:

gcmBroker.OnNotificationFailed += (notification, aggregateEx) =>
{
if (ex is DeviceSubscriptonExpiredException)
{
var subExc = ex as DeviceSubscriptonExpiredException;
}
}

我可以从数据库中删除过期的 token ,但我的困惑实际上是设备 token 没有过期。设备有效但有时由于此异常而无法接收通知。

根据 this线程只有当我们对同一设备进行多次注册时才会发生。但是我正在根据唯一的设备 ID 存储设备 token 。我得到的设备 ID 如下:

try
{
var telephonyManager = (TelephonyManager)Forms.Context.GetSystemService(Android.Content.Context.TelephonyService);
if (telephonyManager != null)
{
deviceId = telephonyManager.DeviceId;

if (string.IsNullOrEmpty(deviceId))
{
deviceId = Android.OS.Build.Serial;
}
}
}

尽管它说设备 ID 是唯一的,但它大部分时间都在变化。我猜测解决此异常的其他方法是获取一些在 Android 设备中始终唯一的 ID。

请提供一些解决此问题的建议。

最佳答案

检查 DeviceSubscriptonExpiredException 异常的 NewSubscriptionId 属性,如果它为空,则您需要在手机上请求新的 registrationId(使用“com.google.android.c2dm.intent.REGISTER").

在极少数情况下,请尝试重新安装应用程序。

关于google-cloud-messaging - 设备订阅已过期 - 修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com