#Sirenとは
簡単に強制バージョンアップが実装できるライブラリです。
Android,iOS共に存在しますが、今回はAndroidで試します。
#設定
まずは、root直下のgradleファイルにて、jitpackリポジトリから取ってこれるようにします。
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
そして、appモジュールのgradleファイルに依存関係を追加。
dependencies {
implementation 'com.github.eggheadgames:Siren:1.5.2'
}
Sirenは、jsonを購読して強制バージョンアップする必要があるか否かを判断します。
{ "hoge.fuga.app":
{
"minVersionName": "1.5.0",
"minVersionCode": "150000",
"enable": true
"force": true
}
}
基本的にVersionNameかVersionCodeがあれば良い。
ただ、オプションとしてリモートでバージョンチェック機能を切り替えられるenableと更新が毎回強制になるforceを持たせることも可能です。
#使い方
バージョン管理はセマンティックを採用しています。
そのため、メジャー・マイナー・パッチごとに更新タイプを設定します。
バージョンコード購読時の設定も可能です。
他にも言語設定や更新チェックの頻度も設定可能です。
###標準ダイアログ版
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val siren = Siren.getInstance(getApplicationContext())
siren.setMajorUpdateAlertType(SirenAlertType.FORCE)
siren.setMinorUpdateAlertType(SirenAlertType.FORCE)
siren.setPatchUpdateAlertType(SirenAlertType.OPTION)
siren.setRevisionUpdateAlertType(SirenAlertType.NONE)
siren.setVersionCodeUpdateAlertType(SirenAlertType.FORCE)
siren.checkVersion(this, SirenVersionCheckType.IMMEDIATELY, SIREN_JSON_DOCUMENT_URL); // 第三引数は、購読するJSONのURL
}
###カスタムダイアログ版
アラートタイプをNONEに設定することで、ライブラリ側の標準ダイアログが表示されなくなります。
代わりにリスナーのonDetectNewVersionWithoutAlert
がイベントを受け取ります。
その際に、標準のメッセージも受けることができます。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val siren = Siren.getInstance(getApplicationContext())
siren.setMajorUpdateAlertType(SirenAlertType.NONE)
siren.setMinorUpdateAlertType(SirenAlertType.NONE)
siren.setPatchUpdateAlertType(SirenAlertType.NONE)
siren.setRevisionUpdateAlertType(SirenAlertType.NONE)
siren.setVersionCodeUpdateAlertType(SirenAlertType.NONE)
siren.checkVersion(this, SirenVersionCheckType.IMMEDIATELY, SIREN_JSON_DOCUMENT_URL);
}
ISirenListener sirenListener = new ISirenListener() {
@Override
public void onShowUpdateDialog() {
Log.d(TAG, "onShowUpdateDialog");
}
@Override
public void onLaunchGooglePlay() {
Log.d(TAG, "onLaunchGooglePlay");
}
@Override
public void onSkipVersion() {
Log.d(TAG, "onSkipVersion");
}
@Override
public void onCancel() {
Log.d(TAG, "onCancel");
}
@Override
public void onDetectNewVersionWithoutAlert(String message) {
// ここでカスタムダイアログの発火
Log.d(TAG, "onDetectNewVersionWithoutAlert: " + message);
}
@Override
public void onError(Exception e) {
Log.d(TAG, "onError");
e.printStackTrace();
}
};
###注意点
ダイアログの更新ボタンをタップするとGoogle Play Storeへの遷移処理が始まります。
しかし、ここでアプリの更新を行わなかった場合アプリに戻るとバージョンアップしていないにも関わらず、引き続きアプリが使えてしまいます。
先ほどの例では、onCreate時にだけバージョンチェックを行っていました・・・、。
そこで、バージョンチェック諸々の処理は関数に切り分け、onResumeでも呼び出すのが良さげです。
override fun onResume() {
super.onResume()
checkUpdate()
}
#終わり
ほとんどREADMEの和訳になりました。
新年の景気付けとして書きました。
今年も学びの多い一年になりますように。