繁体   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