设备令牌首次返回null

时间:2014-06-18 06:33:29

标签: android push-notification google-cloud-messaging

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

    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) {

    }
}

1 个答案:

答案 0 :(得分:1)

我不知道它的gona工作天气或者不管怎么试试....让我知道 在您的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尝试检索该首选项值而不是获取String regId。

相关问题