设备注册 ID/设备令牌未生成

Posted

技术标签:

【中文标题】设备注册 ID/设备令牌未生成【英文标题】:Device Registration Id/Device Token is not generating 【发布时间】:2015-04-21 06:25:04 【问题描述】:

我正在尝试使用 GCM(Google Cloud Messaging)进行推送通知,我已尝试使用示例应用程序,它在我的设备上运行良好,并且设备 ID/令牌正在生成并能够推送通知。

如果我尝试使用另一个设备应用程序运行相同的应用程序,但未生成设备令牌/注册 ID。

我不知道我在哪里犯了错误,需要帮助才能弄清楚。

提前致谢。

这是我的代码 sn-p

 public void onCreate()
    super.onCreate();
    final String preferences = getString(R.string.preferences);
    savedValues = getSharedPreferences(preferences, Context.MODE_PRIVATE);
    // In later versions multi_process is no longer the default
    if(VERSION.SDK_INT >  9)
        savedValues = getSharedPreferences(preferences, Context.MODE_MULTI_PROCESS);
    
    gcm = GoogleCloudMessaging.getInstance(getBaseContext());
    SharedPreferences savedValues = PreferenceManager.getDefaultSharedPreferences(this);
    if(savedValues.getBoolean(getString(R.string.first_launch), true))
        register();
        SharedPreferences.Editor editor = savedValues.edit();
        editor.putBoolean(getString(R.string.first_launch), false);
        editor.commit();
    
    // Let androidMobilePushApp know we have just initialized and there may be stored messages
    sendToApp(new Bundle(), this);

然后是我的注册方法,

private void register() 
    new AsyncTask<Object, Object, Object>()
        protected Object doInBackground(final Object... params) 
            String token;
            try 
                token = gcm.register(getString(R.string.project_number));
                Log.i("registrationId", token);
             
            catch (IOException e) 
                Log.i("Registration Error", e.getMessage());
            
            return true;
        
    .execute(null, null, null);

【问题讨论】:

如果您分享您的代码以获取设备 ID,那就太好了。和未生成设备令牌的设备名称。 请问您可以添加您的 gcm 注册码吗? 希望上面的 sn-ps 有帮助...! 我假设您能够通过 try-catch 部分而不会引发异常。检查R.string.project_number 在您的测试设备上返回一个有效值。 【参考方案1】:

    您在哪个设备上进行测试?如果它是 4.0.4 之前的版本,那么您必须使用某个 google 帐户登录。请参阅:Why google Account login is required for GCM to work for devices below 4.0.4 OS?

    还要检查设备上是否安装了 google play 服务。

    如果应用程序包与您注册的广播接收器中的相同,请检查 android manifest。

【讨论】:

以上是关于设备注册 ID/设备令牌未生成的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中注册远程通知时未收到设备令牌

为啥我必须对注册令牌保密?

何时分配设备令牌?

设备令牌已过期或应用程序未从通知中注册

firebase 使用啥来生成注册令牌?

APNS 通知未到达在 Apple MDM 中注册的设备