এই উত্তরটি উদাহরণ আইডি নষ্ট করে না, পরিবর্তে এটি বর্তমানের জন্য সক্ষম হয়। এটি ভাগ করা পছন্দগুলিতে রিফ্রেশ একটিকে সঞ্চয় করে।
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);
}
মাইফায়ারবেসআইনস্ট্যান্সআইডি সার্ভিস.জভা (ফায়ারবেসআইনস্ট্যান্সআইডি সার্ভিসাকে প্রসারিত করে)
@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);
....
}
onCreate
স্বয়ংক্রিয়ভাবে ( উত্স ) শুরু করার সময় অ্যানড্রয়েড 2.0 এবং এর উপরে পরিষেবাটি চালু করা হয় না । পরিবর্তে onStartCommand
ওভাররাইড এবং ব্যবহার করা হয়। তবে প্রকৃত ফায়ারবেসআইনস্ট্যান্সআইডি সার্ভিসে এটিকে চূড়ান্ত হিসাবে ঘোষণা করা হয় এবং ওভাররাইড করা যায় না। তবে, আমরা যখন সার্ভিসটি স্টার্ট সার্ভিস () ব্যবহার করে শুরু করি, যদি পরিষেবা ইতিমধ্যে চালু থাকে তবে এর আসল উদাহরণটি ব্যবহৃত হয় (যা ভাল)। আমাদের অনক্রিট () (উপরে সংজ্ঞায়িত) এছাড়াও আহ্বান করা হয়েছে!
এটি মেইনএকটিভিটির সূচনাতে বা যে কোনও পয়েন্টে আপনার মনে হয় উদাহরণ আইডি দরকার।
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())
দ্রষ্টব্য , আপনি ফাইরবেসআইন্সট্যান্সআইডি পদ্ধতিতে স্টার্টজারিস () কোডটি সরানোর চেষ্টা করে এটিকে আরও বাড়িয়ে তুলতে পারেন।