How to notify users about an Android app update?

前端 未结 17 850
眼角桃花
眼角桃花 2020-11-28 23:30

I\'ve built an Android app which is now on Play Market. From time to time, I make updates to it, and I\'d like to let users know that a new version is available.

How

17条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-29 00:23

    i think this is too late but it can be help some one

    public enum AppVersionUpgradeNotifier {
    INSTANCE;
    
    private static final String TAG = "AppVersionUpdateManager";
    
    private static final String PREFERENCES_APP_VERSION = "pref_app_version_upgrade";
    private static final String KEY_LAST_VERSION = "last_version";
    
    private SharedPreferences sharedPreferences;
    private VersionUpdateListener versionUpdateListener;
    private boolean isInitialized;
    
    public static synchronized void init(Context context, VersionUpdateListener versionUpdateListener) {
        if (context == null || versionUpdateListener == null) {
            throw new IllegalArgumentException(TAG + " : Context or VersionUpdateListener is null");
        }
    
        if (!INSTANCE.isInitialized) {
            INSTANCE.initInternal(context, versionUpdateListener);
        } else {
            Log.w(TAG, "Init called twice, ignoring...");
        }
    }
    
    private void initInternal(Context context, VersionUpdateListener versionUpdateListener) {
        this.sharedPreferences = context.getSharedPreferences(PREFERENCES_APP_VERSION, Context.MODE_PRIVATE);
        this.versionUpdateListener = versionUpdateListener;
        this.isInitialized = true;
        checkVersionUpdate();
    }
    
    private void checkVersionUpdate() {
        int lastVersion = getLastVersion();
        int currentVersion = getCurrentVersion();
    
        if (lastVersion < currentVersion) {
            if (versionUpdateListener.onVersionUpdate(currentVersion, lastVersion)) {
                upgradeLastVersionToCurrent();
            }
        }
    }
    
    private int getLastVersion() {
        return sharedPreferences.getInt(KEY_LAST_VERSION, 0);
    }
    
    private int getCurrentVersion() {
        return BuildConfig.VERSION_CODE;
    }
    
    public void upgradeLastVersionToCurrent() {
        sharedPreferences.edit().putInt(KEY_LAST_VERSION, getCurrentVersion()).apply();
    }
    
    public interface VersionUpdateListener {
        boolean onVersionUpdate(int newVersion, int oldVersion);
    }
    

    }

    use it on

    public class MyApplication extends Application implements AppVersionUpgradeNotifier.VersionUpdateListener {
    
    @Override
    public void onCreate() {
        super.onCreate();
    
        AppVersionUpgradeNotifier.init(this,this);
    }
    
    @Override
    public boolean onVersionUpdate(int newVersion, int oldVersion) {
        //do what you want
    
        return true;
    }
    

    }

提交回复
热议问题