android - Device Token 第一次返回null

标签 android push-notification google-cloud-messaging

我使用以下代码在 Android 设备中获取设备 token 。但我第一次尝试时得到的是空值。

    GCMRegistrar.checkDevice(this);
    GCMRegistrar.checkManifest(this);
   String regId = GCMRegistrar.getRegistrationId(this);
    if (regId.equals("")) {
        GCMRegistrar.register(this, UtilsGcm.GCMSenderId);
        }

这是我使用的 GCM 类

public class GCMIntentService extends GCMBaseIntentService {


    public GCMIntentService() {
        super(UtilsGcm.GCMSenderId);
    }

    @Override
    protected void onError(Context context, String regId) {
        Log.e("", "error registration id : " + regId);

    }

    @Override
    protected void onMessage(Context context, Intent intent) {
        handleMessage(context, intent);
    }

    @Override
    protected void onRegistered(Context context, String regId) {
        System.out.println("on registered" + regId);
        UtilsGcm.registrationId = regId;
        handleRegistration(context, regId);
    }

    @Override
    protected void onUnregistered(Context arg0, String arg1) {

    }
}

最佳答案

我不知道它是否会成功,无论如何试一试....让我知道 在你的 GCM 类中检查天气是否存在,如果不把它放在那里

private void handleRegistration(Context context, String regId) 
    {
        // TODO Auto-generated method stub
        Utils.registrationId = regId;
        SavePreferences("PUSHNOT",regId);
         Log.e("", "registration id : "+regId);


         //sendDeviceIdFuction(context,UtilsGcm.registrationId);


    }
    private void SavePreferences(String key, String value) 
    {
        // TODO Auto-generated method stub
        SharedPreferences sharedPreferences = getSharedPreferences("myPrefs", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.commit();  
    }

在这里,您在应用首选项中注册后保存了 regid,尝试检索该首选项值而不是采用字符串 regId。

关于android - Device Token 第一次返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24278551/

相关文章:

java - Xamarin Android 应用程序中的 ListView

ios - 当应用程序在 swift 3 中处于前台时,隐藏特定 View Controller 的远程通知

java - 在 Java 中使用 Pushetta 发送推送通知会导致 403 Forbidden

Android GCM time_to_live 问题

javascript - 无法使用 Node js 为 gcm 创建 notification_key

android - 使 Urban Airship 在 Android 上被杀死后重新启动

安卓 : How to display my app when phone number is tapped (Open With)

android - 与原生短信应用程序 Android 中一样使用名称和号码自动完成

Android:如何从 listView 和 arrayAdapter 中删除项目

javascript - 跟踪新插入的文档并执行特定事件