如何在Android应用程序中取消注册Google Cloud Messaging客户端

4

我在xamarin环境中开发了一个使用GCM(Google Cloud Messaging)和Azure通知中心的Android应用程序。

问题是:我不知道如何取消之前订阅的标签。即使我卸载并重新安装,该应用程序仍会接收到我之前订阅的每个标签的通知。

也许我需要实现以下功能:

protected override void OnUnRegistered(Context context, string registrationId)
{
     throw new NotImplementedException();
}

你需要创建一个广播接收器,用于检查你的更新应用程序。在该广播接收器中,你可以像这样调用:if (GCMRegistrar.isRegistered(context)) { GCMRegistrar.unregister(context); } - Pankaj
https://developers.google.com/android/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#unregister%28%29 - Vishal Gaur
2个回答

2
我认为你需要在Azure通知中心注销(Unregister)。
protected override void OnUnRegistered(Context context, string registrationId)
{
    if (hub != null)
        hub.Unregister();
}

这里的hub是您在OnRegistered中使用的同一个NotificationHub


0

使用unregister()方法停止接收GCM消息。

protected override void OnUnRegistered(Context context, string registrationId){
     //Run on background
     GoogleCloudMessaging.getInstance(context).unregister();
}

public void unregister ()

取消注册应用程序。调用unregister()会停止来自服务器的任何消息。 这是一个阻塞调用——您不应该从UI线程中调用它。您很少(如果有的话)需要调用此方法。 它不仅在资源方面昂贵,而且使您的注册ID无效,这不应该不必要地更改。 更好的方法是让您的服务器停止发送消息。只有在您希望应用程序永久停止使用GCM, 或者您有充分的理由回收您的注册ID时才使用unregister。如果我们无法连接到服务器进行注销,则会抛出IOException。


你最好解释一下你的答案是如何解决他的问题的。 - Muhammed Refaat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接