यह उत्तर आवृत्ति आईडी को नष्ट नहीं करता है, इसके बजाय यह वर्तमान प्राप्त करने में सक्षम है। यह साझा वरीयताओं में एक ताज़ा भी है।
strings.xml
<string name="pref_firebase_instance_id_key">pref_firebase_instance_id</string>
<string name="pref_firebase_instance_id_default_key">default</string>
उपयोगिता.जावा (कोई भी वर्ग जहाँ आप प्राथमिकताएँ प्राप्त करना / प्राप्त करना चाहते हैं)
public static void setFirebaseInstanceId(Context context, String InstanceId) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor;
editor = sharedPreferences.edit();
editor.putString(context.getString(R.string.pref_firebase_instance_id_key),InstanceId);
editor.apply();
}
public static String getFirebaseInstanceId(Context context) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String key = context.getString(R.string.pref_firebase_instance_id_key);
String default_value = context.getString(R.string.pref_firebase_instance_id_default_key);
return sharedPreferences.getString(key, default_value);
}
MyFirebaseInstanceIdService.java (FirebaseInstanceIdService का विस्तार)
@Override
public void onCreate()
{
String CurrentToken = FirebaseInstanceId.getInstance().getToken();
//Log.d(this.getClass().getSimpleName(),"Inside Instance on onCreate");
String savedToken = Utility.getFirebaseInstanceId(getApplicationContext());
String defaultToken = getApplication().getString(R.string.pref_firebase_instance_id_default_key);
if(CurrentToken != null && !savedToken.equalsIgnoreCase(defaultToken))
//currentToken is null when app is first installed and token is not available
//also skip if token is already saved in preferences...
{
Utility.setFirebaseInstanceId(getApplicationContext(),CurrentToken);
}
super.onCreate();
}
@Override
public void onTokenRefresh() {
.... prev code
Utility.setFirebaseInstanceId(getApplicationContext(),refreshedToken);
....
}
एंड्रॉइड 2.0 और onCreate
सेवा के ऊपर स्वचालित रूप से शुरू होने पर ( स्रोत ) शुरू नहीं किया जाता है । इसके बजाय onStartCommand
ओवरराइड और उपयोग किया जाता है। लेकिन वास्तविक FirebaseInstanceIdService में इसे अंतिम घोषित किया जाता है और इसे ओवरराइड नहीं किया जा सकता। हालांकि, जब हम स्टार्ट सर्विस () का उपयोग करके सेवा शुरू करते हैं, यदि सेवा पहले से चल रही है, तो इसका मूल उदाहरण उपयोग किया जाता है (जो अच्छा है)। हमारे onCreate () (ऊपर परिभाषित) भी आह्वान किया गया!।
MainActivity की भीख में या जो भी आपको लगता है कि आपको आईडी की आवश्यकता है, उसका उपयोग करें।
MyFirebaseInstanceIdService myFirebaseInstanceIdService = new MyFirebaseInstanceIdService();
Intent intent= new Intent(getApplicationContext(),myFirebaseInstanceIdService.getClass());
//Log.d(this.getClass().getSimpleName(),"Starting MyFirebaseInstanceIdService");
startService(intent); //invoke onCreate
और अंत में,
Utility.getFirebaseInstanceId(getApplicationContext())
ध्यान दें , आप getFirebaseInstanceId पद्धति से startervice () कोड को स्थानांतरित करने का प्रयास करके इसे बढ़ा सकते हैं।