質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Google Play

Google Playは、Google社が提供しているAndroid端末向けのデジタルコンテンツ配信サービスです。Google Play Store アプリから、世界中の個人または企業が開発したアプリをダウンロードできます。有料アプリの売り上げは、70%を開発者、30%は通信キャリア等への支払いにあてられます。開発者が登録する場合は、初回のみ25ドルの登録手数料が必要です。

Q&A

0回答

2121閲覧

Google Playで公開されているアプリバージョン・更新日時を取得したい

gittib_gittib

総合スコア102

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Google Play

Google Playは、Google社が提供しているAndroid端末向けのデジタルコンテンツ配信サービスです。Google Play Store アプリから、世界中の個人または企業が開発したアプリをダウンロードできます。有料アプリの売り上げは、70%を開発者、30%は通信キャリア等への支払いにあてられます。開発者が登録する場合は、初回のみ25ドルの登録手数料が必要です。

0グッド

0クリップ

投稿2019/05/30 07:00

編集2019/05/30 07:12

前提・実現したいこと

Androidアプリを更新した際、旧いアプリのユーザーに更新を促すため、Google Playのアプリ情報を取得したいです。
また、Google Play反映までのラグも考慮し、実際にアップデート可能になってからユーザーへアクションを起こしたいです。
(アクション自体は、アプリ起動時にダイアログを表示するといったシンプルなものを考えています)

該当のソースコード・試したこと

現在、クックパッドの記事を参考にPublishing APIを用いてVersionCodeを取得する事はできました。そのコードを以下に示します。

Java

1 @Nullable 2 private String getAccessToken() throws IOException { 3 Activity activity = mActivity.get(); 4 if (activity == null) { 5 return null; 6 } 7 InputStream jsonKeyFile = activity.getResources().openRawResource(R.raw.service_account); 8 GoogleCredential credential; 9 credential = GoogleCredential.fromStream(jsonKeyFile) 10 .createScoped(AndroidPublisherScopes.all()); 11 Logger.d(TAG, "service account id = " + credential.getServiceAccountId()); 12 Logger.d(TAG, "service account private key id = " + credential.getServiceAccountPrivateKeyId()); 13 Logger.d(TAG, "service account scopes = " + credential.getServiceAccountScopesAsString()); 14 15 // アクセストークンの取得 16 credential.refreshToken(); 17 18 String token = credential.getAccessToken(); 19 Logger.d(TAG, "access token: " + token); 20 return token; 21 } 22 23 @Nullable 24 private Integer getRemoteAppVersion(Activity activity, String accessToken) throws IOException { 25 if (activity == null || accessToken == null) { 26 return null; 27 } 28 final String packageName = activity.getPackageName(); 29 GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken); 30 NetHttpTransport netHttpTransport; 31 try { 32 netHttpTransport = GoogleNetHttpTransport.newTrustedTransport(); 33 } catch (GeneralSecurityException e) { 34 netHttpTransport = new NetHttpTransport(); 35 } 36 AndroidPublisher androidPublisher = new AndroidPublisher.Builder(netHttpTransport, 37 JacksonFactory.getDefaultInstance(), credential) 38 .setApplicationName(packageName) 39 .setSuppressAllChecks(true) 40 .build(); 41 AndroidPublisher.Edits edits = androidPublisher.edits(); 42 AppEdit appEdit = edits.insert(packageName, null).execute(); 43 List<Apk> apks = edits.apks().list(packageName, appEdit.getId()) 44 .execute().getApks(); 45 Logger.d(TAG, new Gson().toJson(apks)); 46 int versionCode = apks.get(0).getVersionCode(); 47 for (Apk apk : apks) { 48 if (versionCode < apk.getVersionCode()) { 49 versionCode = apk.getVersionCode(); 50 } 51 } 52 return versionCode; 53 }

ただ、これで取得できるversionCodeはどうやらGoogle Playでリリース操作を完了した瞬間から反映されるらしく、取得されたバージョンは更新されているがAndroid端末からGoogle Playへアクセスするとまだアプリが更新されていない、という状態になってしまいます。

これについて、実際にGoogle Playでの反映を待ってから新たな値やフラグを返す、またはアプリ更新日時を取得できれば、と考えているのですが、その方法が分からないため、ご教授いただければと思います。

補足情報(FW/ツールのバージョンなど)

Android Studio 3.3.2
テスト端末→Android実機 Android8.0.0 ASUS_X00RD

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問