我正在将GCM实施到我的应用中。我以教程here为起点。

问题是我的regId总是null

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);

if (regId.equals(""))
{
    GCMRegistrar.register(this, "627xxxx78");
}
else
{
    if (GCMRegistrar.isRegisteredOnServer(this))
    {
        Log.i(TAG, "Already registered regId : " + regId );
    }
    else
    {
        final Context context = this;

        mRegisterTask = new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                boolean registered =
                        ServerUtilities.register(context, regId);

                if (!registered)
                {
                    GCMRegistrar.unregister(context);
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                mRegisterTask = null;
            }
        };

        mRegisterTask.execute(null, null, null);
    }
}


在上面的代码中,从未调用ServerUtilities.register,因为GCMRegistrar.getRegistrationId(this);总是返回一个空字符串。

有任何想法吗?

最佳答案

确保您的模拟器或设备已使用Google帐户登录。我遇到了同样的问题。我只是登录了设备的google帐户,哈哈,我得到了regId。

10-05 23:52