我想要解决以下问题:
我想向一位用户发送特定于用户的通知,例如感谢消息,而另一位用户则发布作业。我正在寻找一种方法,以便我可以根据用户ID和注册ID发送单独的消息。
我尝试了以下方法,即。
当新用户注册时,将在数据库上创建用户userid。我想如果我同时创建一个注册ID,那么我可以将它保存在服务器上的一个单独的表中。其中包含用户ID和registration_id以及设备类型
但是我注意到在GCM注册时它是异步任务所以我获得它但是直到用户注册,id仍然是null。所以它无法进入数据库。
如果有人对此特定问题有任何想法。或者也解决了类似的问题。然后告诉我。
感谢阅读。
答案 0 :(得分:0)
实际上问题是GCM注册经常要求注册一段时间。因此,有一种简单的方法可以在您的数据库中注册您的ID。一个是,如果你在你的应用程序中使用启动画面,那么尝试在那里注册GCM,并在GCMIntentService的onRegistered方法中保存你的registrationId,如下所示
@Override
protected void onRegistered(Context arg0, String regId) {
Log.v("registrationId", regId);
prefs = getSharedPreferences("filename", 0);
prefs.edit().putString("regid", regId).commit();
}
现在,在登录时,您应该尝试从存储在onRegistered方法中的首选项中获取registrationId。但仍然有1-2%的可能性你不会在这里得到你的注册。因此,您可以为GCM注册创建一个单独的api,您将在LoginActivity旁边的Activity中点击((如果您的注册时间未在登录时注册))以获取注册到您的数据库的ID。
其次,如果您没有使用启动画面,那么您必须为GCM注册单独制作api,因为您在登录期间更有可能无法获得您的registrationId。