如何从GCM获取Registarion Id

时间:2014-02-20 09:59:25

标签: android google-cloud-messaging

我正在开发一个应用程序,因为我必须将GCM的注册ID从应用程序发送到我自己的服务器我写了一些不起作用的代码请告诉我我在哪里犯了错误

myAsynTask类

上下文上下文;

    public static final String EXTRA_MESSAGE = "message";
    public static final String PROPERTY_REG_ID = "registration_id";

    String SENDER_ID = "538459826415";

    static final String TAG = "GCMDemo";
    GoogleCloudMessaging gcm;

    String msg;


    String regid;

@Override
protected Void doInBackground(DetailsDTO... params) {
    // TODO Auto-generated method stub
    httpClient  = new DefaultHttpClient();
    httpPost = new HttpPost(TrafficConstants.USER_REG_URL);


    try{
    gcm = GoogleCloudMessaging.getInstance(context);
    regid = gcm.register(SENDER_ID);
    msg = "Dvice registered, registration ID=" + regid;
    Log.d("111", msg);

    }
    catch(IOException e){
        e.printStackTrace();
    }

    try{
    arrayList = new ArrayList<NameValuePair>(=1);

    arrayList.add(new BasicNameValuePair("rigid", regid));

    httpPost.setEntity(new UrlEncodedFormEntity(arrayList));
    HttpResponse response = httpClient.execute(httpPost);
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return null;

}

logcat的

 02-20 15:26:50.915: W/System.err(5400): java.io.IOException: INVALID_SENDER
   02-20 15:26:50.925: W/System.err(5400):  at     
   com.google.android.gms.gcm.GoogleCloudMessaging.register(Unknown Source)
   02-20 15:26:50.925: W/System.err(5400):  at    
   com.technowellServices.locationfind.async.UserDetailsAsync.doInBackground
    (UserDetailsAsync.j    ava:82)
    02-20 15:26:50.925: W/System.err(5400):     at 

    com.technowellServices.locationfind.async.UserDetailsAsync.doInBackground
   (UserDetailsAsync.j    ava:1)
   02-20 15:26:50.925: W/System.err(5400):  at   
   android.os.AsyncTask$2.call(AsyncTask.java:287)
    02-20 15:26:50.925: W/System.err(5400):     at   
   android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
   02-20 15:26:50.935: W/System.err(5400):  at    
   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
   02-20 15:26:50.935: W/System.err(5400):  at   
   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
   02-20 15:26:50.935: W/System.err(5400):  at java.lang.Thread.run(Thread.java:856)

1 个答案:

答案 0 :(得分:4)

您的发件人似乎认为它不正确

  

提供项目名称,然后单击“创建”。

     

创建项目后,会出现一个显示项目ID和项目的页面   号。

     

例如,项目编号:670330094152。

您应该在 Google API控制台的项目页面中激活GCM服务

  

服务器应用程序密钥
Android应用程序密钥

也生成了选项。

然后在 Android应用程序密钥中,您应该将哈希码和您的应用程序包名称用分号分隔。

AA:98:0C:AA:03:BD:E7:DA:AA:4A:FA:AF:73:3F:72:E7:D4:11:4S:B1;com.example.myapp

项目编号是发件人ID。

检查一下,然后重试。