gpt4 book ai didi

android - GCM 在 Android 上实现推送通知

转载 作者:行者123 更新时间:2023-11-29 21:11:35 26 4
gpt4 key购买 nike

下面是我的客户端代码:

public class GCMIntentService extends GCMBaseIntentService {
public GCMIntentService() {
super(SENDER_ID);
}
@Override
protected void onError(Context arg0, String arg1) {
}
@Override
protected void onMessage(Context arg0, Intent arg1) {
Context context = getApplicationContext();
String NotificationContent = arg1.getStringExtra("message");
System.out.println("Message: " + NotificationContent);
}
@Override
protected void onRegistered(Context arg0, String arg1) {
System.out.println("Registered id: " + arg1);
}
@Override
protected void onUnregistered(Context arg0, String arg1) {
System.out.println("Unregistered id: " + arg1);
}
}

注册和注销方法如下:

public void Registering() {
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
RegistrationId = GCMRegistrar.getRegistrationId(this);
if(RegistrationId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
}
}
public void Unregistering() {
Intent unregIntent = new Intent("com.google.android.c2dm.intent.UNREGISTER");
unregIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
startService(unregIntent);
}

在同一台设备上,第一次调用Registering(),我得到了registered_id_1
然后我调用 Unregistering(),它会打印: Unregistered id: registered_id_1表示注销成功。
再次调用Registering(),会得到另一个registered_id_2

然后推送通知服务器将消息发送到 registered_id_1,代码如下:

Sender sender = new Sender("Android API Key");// Android API KEY
Message message = new Message.Builder().addData("message", My Message).build();
Result result = null;
try {
result = sender.send(message, registered_id_1, 5);
} catch (IOException e) {
e.printStackTrace();
}

但客户端仍然收到发送到registered_id_1的消息。
我的方法有什么问题?

最佳答案

你的方法没有问题。这就是 GCM 的行为。当设备获得给定应用程序的新注册 ID 时,之前分配给该设备和应用程序的旧注册 ID 仍然有效。如果您使用旧注册 ID 发送 GCM 消息,您将收到包含规范注册 ID(其值是该设备的新注册 ID)的响应。当您收到这样的响应时,您应该从服务器的数据库中删除旧的注册 ID。

或者您可以更好地处理它,如果在取消注册旧的注册 ID 时您还通知您的服务器,它将删除旧的注册 ID 并且不再尝试向它发送消息。

关于android - GCM 在 Android 上实现推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22629764/

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