当前位置: 首页 > 知识库问答 >
问题:

在客户端获取GCM令牌时出错

常自强
2023-03-14

程序包nath.prem.com.premgcmproject;

//如果令牌被更改,则再次注册设备@override public void onTokenRefresh(){Intent Intent=new Intent(this,GCMRegistrationIntentService.class);startService(Intent);}}

在客户端获取GCM令牌时出错

致命异常:IntentService[]

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 extends IntentService{//constants for success and errors public static final String REGISTRATION_SUCCESS=“registrationsuccess”;公共静态最终字符串REGISTRATION_ERROR=“registrationerror”;//类构造函数公共GCMRegistrationIntentService(){super(“”);}@override protected void onHandleIntent(Intent Intent){//将gcm注册到设备registerGCM();}private void registrergCM(){//registration complete intent interitial null intent registrationComplete=//注册令牌也为null//我们将在成功注册字符串token=null上获得令牌;SharedPreferences SharedPreferences=PreferenceManager.GetDefaultSharedPreferences(尝试{//创建instanceid instanceid instanceid=instanceid.getInstance(this);//////从实例id获取令牌token=instanceId.getToken(getString(r.string.gcm_defaultsenderid),GoogleCloudMessaging.instance_id_scope,null);//在日志中显示令牌,以便我们可以复制它以发送推送通知//您还可以通过将令牌存储到服务器日志中来扩展应用程序。w(“gcmregintentservice”,“token:”+token);//注册完成时,创建带有成功的意图registrationComplete=新意图(REGISTRATION_SUCCESS);//将令牌放入意图//RegistrationComplete.putExtra(“token”,token);}catch(异常e){//如果发生任何错误,则log.w(“GCMRegintentService”,“Registration error”);registrationComplete=新意图(REGISTRATION_ERROR);}//发送注册已完成的广播LocalBroadcastManager.GetInstance(this).SendBroadcast(registrationComplete);}}

这是该类的java代码

这是我在项目中最重要的文件......但我在RegistrationIntentService中看不到任何日志:

共有1个答案

郦兴德
2023-03-14

试试这个,

build.gradle添加编译“com.google.android.gms:play-services-gcm:9.0.2”依赖项

 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("");
    }
 类似资料:
  • 我正在写一个小小的短信网关,供几个项目使用, 我实现了laravel passport身份验证(客户端凭据授予令牌) 然后,我向api中间件组添加了: 逻辑工作正常,现在在我的控制器中,我需要让客户机与有效令牌关联。 routes.php 出于明显的安全原因,我无法将客户端id与消费者请求一起发送,例如,

  • 我按照谷歌提供的留档使用API访问gmail。根据谷歌留档,我们需要访问令牌来管理gmail。 因此,我试图通过阅读下面给出的文档链接来创建一个访问令牌。 Link1:-developers.google.com/accounts/docs/OAuth2WebServer,基于此文档创建了URL1。 Link2:-code.google.com/p/google-mail-oauth2-tools

  • 我在这里有点迷路,需要一些直接的请。我是新来Java,这是我试图写的第一个程序,显然与它斗争了一个月左右。因此,目前我们使用邮递员输入客户端ID/秘密从第三方应用编程接口获得访问令牌,使用该令牌我们可以从第三方的另一个终端请求资源。我正在尝试引用多个资源,如此Spring安全示例https://github.com/spring-projects/spring-security/blob/mast

  • 我使用在我的ASP. NET Core应用程序中实现Stripe。 我知道如何使用获得信用卡充值的令牌,但是我从哪里获得令牌来创建客户呢? 在文档中,我看到我需要获得一个令牌来创建客户,但不确定该令牌来自何处。https://stripe.com/docs/api/dotnet#create_customer 据我所知,代币只能使用一次,所以它不能是我在信用卡充值前得到的相同代币。

  • 想改进这个问题吗?通过编辑这篇文章添加细节并澄清问题。 我想在FCM主题中获取令牌列表。基本上,我希望订阅FCM主题的令牌列表。 基本上,我想要来自FCM主题的注册客户端令牌。