0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Play StoreとAppGallery両方にアプリをリリースした場合のアプリアップデート方法について考案しました

Last updated at Posted at 2021-09-22

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

build.gradle
implementation 'com.google.android.gms:play-services-base:17.6.0'
implementation 'com.huawei.hms:base:6.0.1.302'

プロジェクトのbuild.gradle

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/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?