簡體   English   中英

在客戶端獲取GCM令牌時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM