[英]Error while getting GCM token in client side
包nath.prem.com.premgcmproject;
導入android.content.Intent;
導入com.google.android.gms.iid.InstanceIDListenerService;
/ ** *由prem在16/7/16創建。 * /公共類GCMTokenRefreshListenerService擴展了InstanceIDListenerService {
//如果令牌已更改,請再次注冊設備@Override public void onTokenRefresh(){Intent intent = new Intent(this,GCMRegistrationIntentService.class); startService(intent); }}
在客戶端獲取GCM令牌時出錯
致命例外:IntentService []
java.lang.IncompatibleClassChangeError:com.google.android.gms.iid.zzd.zzdL上的android.support.v4.content.ContextCompat(未知源)
在
com.google.android.gms.iid.zzd的com.google.android.gms.iid.zzd。(未知源)com.google.android.gms.iid.InstanceID.zza(未知的源) ),網址為com.google.android.gms.iid.InstanceID.getInstance(未知來源)
這是我在獲取gcm令牌時遇到的錯誤
公共類GCMRegistrationIntentService擴展了IntentService {//成功和出錯的常量public static final String REGISTRATION_SUCCESS =“ RegistrationSuccess”; 公共靜態最終字符串REGISTRATION_ERROR =“ RegistrationError”; //類構造函數public GCMRegistrationIntentService(){super(“”); } @Override protected void onHandleIntent(Intent intent){//將gcm注冊到設備registerGCM(); } private void registerGCM(){//注冊完成意圖最初為null意圖registrationComplete = null; //注冊令牌也為空//成功注冊后,我們將獲得令牌。String token = null; SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 嘗試{//創建一個instanceid InstanceID instanceID = InstanceID.getInstance(this); // // //從實例ID獲取令牌token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),GoogleCloudMessaging.INSTANCE_ID_SCOPE,null); //在日志中顯示令牌,以便我們可以將其復制以發送推送通知//您還可以通過將令牌存儲到服務器Log.w(“ GCMRegIntentService”,“ token:” + token)中來擴展應用程序 //完成注冊后,使用成功registrationComplete = new Intent(REGISTRATION_SUCCESS)創建意圖 //將令牌放入意圖// // registrationComplete.putExtra(“ token”,token); } catch(Exception e){//如果發生任何錯誤Log.w(“ GCMRegIntentService”,“注冊錯誤”); registrationComplete =新的Intent(REGISTRATION_ERROR); } //發送完成注冊的廣播LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete); }}
這是該類的Java代碼
這是我在項目中的清單文件……但是我看不到RegistrationIntentService中的任何日志:
嘗試這個,
在build.gradle
添加compile 'com.google.android.gms:play-services-gcm:9.0.2'
依賴build.gradle
private void registerToGCM() {
new AsyncTask<String, String, String>() {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(LoginActivity.this);
progressDialog.setMessage(getString(R.string.gcm_register_message));
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected String doInBackground(String... params) {
String registryId = null;
try {
InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
registryId = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
} catch (Exception ex) {
Log.e("MAINACIVITY", "gcm register Error " + ex.toString());
}
return registryId;
}
@Override
protected void onPostExecute(String registeredId) {
super.onPostExecute(registeredId);
progressDialog.dismiss();
// perform action here
}
}.execute("");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.