Google Play StoreとAppGallery両方にアプリをリリースした場合、アプリのアップデートロジックもそれに合わせてカスタマイズしなければなりません。
もし、アップデートのリンクをGoogle Play Storeに固定させてしまったら、Google Play Storeが入っていないHMS端末ではアプリがアップデートできないことが生じてしまいます。
Google Play StoreとAppGallery両方にアプリをリリースした場合のアップデートのソリューション
ソリューション1
GMSとHMSがあるかないかでアップデートリンクを分けます。
private fun updateAppByCheckingService() {
// GMSの存在確認
val googleResult = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this)
// HMSの存在確認
val huaweiResult = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(this)
// 先にGMSが使えるかどうか調べる
// GMSが使える場合、Play Storeが存在するとみなす
if (com.google.android.gms.common.ConnectionResult.SUCCESS == googleResult) {
startActivity(Intent(Intent.ACTION_VIEW, https://play.google.com/store/apps/details?id={パッケージ名]}))
}
// GMSが使えない場合、HMSが使えるかどうか調べる
// HMSが使える場合、AppGalleryが存在するとみなす
else if (com.huawei.hms.api.ConnectionResult.SUCCESS == huaweiResult) {
startActivity(Intent(Intent.ACTION_VIEW, market://com.huawei.appmarket.applink?appId={アプリID}))
}
}
モジュールのbuild.gradle
implementation 'com.google.android.gms:play-services-base:17.6.0'
implementation 'com.huawei.hms:base:6.0.1.302'
プロジェクトのbuild.gradle
buildscript {
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
}
...
}
allprojects {
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
}
}
ソリューション2
Google Play StoreとAppGalleryがあるかないかでアップデートリンクを分けます。
private fun updateAppByCheckingPackage() {
// 先にPlay Storeが使えるかどうか調べる
if (getApplicationInfo("com.android.vending") != null) {
startActivity(Intent(Intent.ACTION_VIEW, {}))
}
// Play Storeが使えない場合、AppGalleryが使えるかどうか調べる
else if (getApplicationInfo("com.huawei.appmarket") != null) {
startActivity(Intent(Intent.ACTION_VIEW, {}))
}
}
private fun getApplicationInfo(packageName: String): ApplicationInfo? {
return try {
packageManager.getApplicationInfo(packageName, 0)
} catch (exception: PackageManager.NameNotFoundException) {
null
}
}
GitHub
https://github.com/Rei2020GitHub/MyPublicProject/tree/master/CheckUpdtae
参考サイト
AppGallery:https://appgallery.huawei.com/#/Featured
AppGalleryの紹介:https://consumer.huawei.com/jp/mobileservices/appgallery/
HMS:https://developer.huawei.com/consumer/jp/
HuaweiApiAvailability:https://developer.huawei.com/consumer/jp/doc/development/HMS-References/huaweiapiavailability
Huawei Developers:https://forums.developer.huawei.com/forumPortal/en/home
Facebook Huawei Developersグループ:https://www.facebook.com/Huaweidevs/