我在项目中添加了Firebase Notification
,现在当我启动应用程序时,它点击Firebase server
并获得Token
。我希望它能够保存请求,并在事件中点击firebase服务器。
这就是我所做的,我没有创建任何Firebase实例,它自己被调用。
<service android:name=".FirebaseCloudMessaging.FirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".FirebaseCloudMessaging.FirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
FirebaseInstanceIDService类
public class FirebaseInstanceIDService extends FirebaseInstanceIdService {
private final String SHARD_PREF = "com.tixsee.mavs.gcmcloudmessaging";
private final String GCM_TOKEN = "gcmtoken";
private final String TAG = FirebaseInstanceIDService.class.getSimpleName();
String token;
private Context mContext;
public FirebaseInstanceIDService() {
}
@Override
public void onTokenRefresh() {
SharedPreferences appPrefs = getSharedPreferences(SHARD_PREF, Context.MODE_PRIVATE);
token = appPrefs.getString(GCM_TOKEN, "");
if (token.isEmpty()) {
token = FirebaseInstanceId.getInstance().getToken();
sendTokenToService(token);
Log.d(TAG, "New Token Created" + token);
SharedPreferences notificationPreference = getSharedPreferences(SHARD_PREF, Context.MODE_PRIVATE);
SharedPreferences.Editor notificationPrefsEditor = notificationPreference.edit();
notificationPrefsEditor.putString("NOTIFICATION_ENABLED", "true");
notificationPrefsEditor.apply();
}
请指导我如何保存Firebase请求,并在任何特定事件上触发它。
答案 0 :(得分:1)
只需在共享首选项中存储用户接受通知的标记
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("notification", true);
editor.commit();
然后检查onTokenRefresh()
中的标志SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
boolean value = sharedPref.getBoolean("notification", false);
if(value)
{
\\ Send to token(FirebaseInstanceId.getInstance().getToken()) to server
}
如果设置了标志,则将令牌发送到服务器。
如果在用户接受屏幕之前自动调用onTokenRefresh,也会输入。然后检查FirebaseInstanceId.getInstance().getToken();
是否为空。
if(FirebaseInstanceId.getInstance().getToken()!=null)
{
\\ Send to token(FirebaseInstanceId.getInstance().getToken()) to server
}
如果它不为null,则将该令牌发送到服务器。
希望这能解决你的问题。