创建项目并从https://developers.google.com/cloud-messaging/android/start获取服务器api密钥和发送者ID,并使用以下代码生成注册ID
GoogleCloudMessaging gcm;
String SENDER_ID = "mysenderid";
String Reg_id;
Context context;
EditText firstNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Reg_id=registerGCM();
}
public String registerGCM()
{
String regid=null;
try {
firstNumber = (EditText)findViewById(R.id.regisid_1);
context = getApplicationContext();
gcm = GoogleCloudMessaging.getInstance(context);
regid = gcm.register(SENDER_ID);
firstNumber.setText(regid);
}
catch(Exception ae)
{
}
return regid;
}
但是执行代码后,regid显示为null。
最佳答案
如果gcm id为null尝试启动后台任务并获取id.check下面的代码
private void registerInBackground() {
new AsyncTask() {
@Override
protected String doInBackground(Object[] params) {
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
regid = gcm.register(SENDER_ID);
msg = "Device registered, registration ID=" + regid;
sendRegistrationIdToBackend();
// Persist the regID - no need to register again.
storeRegistrationId(context, regid);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
}
return msg;
}
@Override
protected void onPostExecute(Object msg) {
// mDisplay.append(msg + "\n");
}
}.execute(null, null, null);
}