java - 使用 GCM 发送推送消息时错误代码 "notRegistered"是什么意思?

标签 java android google-cloud-messaging

我正在尝试通过 Java 服务器通过以下代码向已注册的设备发送推送通知:

import java.io.IOException;
import java.util.ArrayList;

import com.google.android.gcm.server.Constants;
import com.google.android.gcm.server.Message;
import com.google.android.gcm.server.MulticastResult;
import com.google.android.gcm.server.Result;
import com.google.android.gcm.server.Sender;


public class Test {




    private void sendNotification()
    {
           try{
                 Sender sender = new Sender("AIzaSyD9GblH8c9qCBqDhLPKMca3dH8JsY4cgjg");
                 ArrayList<String> devicesList = new ArrayList<String>();
                 devicesList.add("APA91bEtN2c3FYSFPpW-KuNtkWT6B9NJUviKN0L0DCjviJ2BtMyhZLqsFSFKfsySI1s88I0u68xETjvpqhvepffRSgwoTmpRXAv0Fbr0gH8CLhHO5CJC-M8");
                 String data = "hi.......";
                 Message message = new Message.Builder()
                                    .collapseKey("1")
                                    .timeToLive(3)
                                    .delayWhileIdle(true)
                                    .addData("message",
                                            data)
                                    .build();
                MulticastResult result = sender.send(message, devicesList, 1);
                            sender.send(message, devicesList, 1);

                            System.out.println(result.toString());
                            if (result.getResults() != null) {
                                int canonicalRegId = result.getCanonicalIds();
                                if (canonicalRegId != 0) {
                               System.out.println("hi...");
                                }
                            } else {
                                int error = result.getFailure();
                                System.out.println(error);
                            }

            }
           catch(Exception e)
           {
               System.out.println(e);
           }
    }
    public static void main(String ar[])
    {
        new Test().sendNotification();


    }

}

我收到以下错误:

MulticastResult(multicast_id=7574342191790679138,total=1,success=0,failure=1,canonical_ids=0,results: [[ error-code=NotRegistered ]]

之前有人发过类似的问题,但我没有在那里找到满意的答案。

最佳答案

您在 devicesList 中提供的设备的注册 ID 未在 gcm 中注册。您首先需要在 gcm 中注册您的设备以获得有效的 RegistrationId。获取此 RegId 后然后你将它传递给服务器,只有你的服务器才能通过 GCM 推送通知。

关于java - 使用 GCM 发送推送消息时错误代码 "notRegistered"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34308115/

相关文章:

ios - 使用 pod Google/Cloud Messaging 时 iTunes Store 应用程序验证错误

java - 下面的java多线程例子总是死锁

android - libtinyWRAP_neon.so 有文本重定位。这是在浪费内存并且存在安全风险。请修复

android - Android GCM 上的 registeredOnServer 状态何时过期?

android - 在 Android 中绘制单杠最简单的方法是什么?

java - Android + MySQL 使用 com.mysql.jdbc.Driver

javascript - 如何使用 Firebase Cloud Messaging 向多个设备发送推送通知

java - ArayIndexOutOfBoundsException 不起作用

java - Java中如何确定集合中的类?

java - 从 BufferedImages 编写动画 gif