Created
March 5, 2016 12:26
-
-
Save burnix/91fcafd0140693c9233b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class UtilGCM { | |
| public static final String PROPERTY_REG_ID = "registration_id"; | |
| private static final String PROPERTY_APP_VERSION = "appVersion"; | |
| static final String TAG = "GCM"; | |
| /** | |
| * Stores the registration ID and the app versionCode in the application's | |
| * {@code SharedPreferences}. | |
| * | |
| * @param context application's context. | |
| * @param regId registration ID | |
| */ | |
| public static void storeRegistrationId(Context context, String regId) { | |
| final SharedPreferences prefs = getGcmPreferences(context); | |
| int appVersion = getAppVersion(context); | |
| Log.i(TAG, "Saving regId on app version " + appVersion); | |
| SharedPreferences.Editor editor = prefs.edit(); | |
| editor.putString(PROPERTY_REG_ID, regId); | |
| editor.putInt(PROPERTY_APP_VERSION, appVersion); | |
| editor.commit(); | |
| } | |
| /** | |
| * Gets the current registration ID for application on GCM service, if there is one. | |
| * <p/> | |
| * If result is empty, the app needs to register. | |
| * | |
| * @return registration ID, or empty string if there is no existing | |
| * registration ID. | |
| */ | |
| public static String getRegistrationId(Context context) { | |
| final SharedPreferences prefs = getGcmPreferences(context); | |
| String registrationId = prefs.getString(PROPERTY_REG_ID, ""); | |
| if (registrationId.isEmpty()) { | |
| Log.i(TAG, "Registration not found."); | |
| return ""; | |
| } | |
| // Check if app was updated; if so, it must clear the registration ID | |
| // since the existing regID is not guaranteed to work with the new | |
| // app version. | |
| int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE); | |
| int currentVersion = getAppVersion(context); | |
| if (registeredVersion != currentVersion) { | |
| Log.i(TAG, "App version changed."); | |
| return ""; | |
| } | |
| return registrationId; | |
| } | |
| /** | |
| * @return Application's version code from the {@code PackageManager}. | |
| */ | |
| private static int getAppVersion(Context context) { | |
| try { | |
| PackageInfo packageInfo = context.getPackageManager() | |
| .getPackageInfo(context.getPackageName(), 0); | |
| return packageInfo.versionCode; | |
| } catch (PackageManager.NameNotFoundException e) { | |
| // should never happen | |
| throw new RuntimeException("Could not get package name: " + e); | |
| } | |
| } | |
| /** | |
| * @return Application's {@code SharedPreferences}. | |
| */ | |
| static SharedPreferences getGcmPreferences(Context context) { | |
| // This sample app persists the registration ID in shared preferences, but | |
| // how you store the regID in your app is up to you. | |
| return context.getSharedPreferences(MainActivity.class.getSimpleName(), | |
| Context.MODE_PRIVATE); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment