openCACAO / cocoa-issues

接触確認アプリ COCOA に関するIssues用レポジトリです
Creative Commons Zero v1.0 Universal
8 stars 0 forks source link

【Android】インストールのステップを踏まないことがある件 #13

Open teriha8t8 opened 4 years ago

teriha8t8 commented 4 years ago

Androidはアプリのアンインストール、再インストールを連続して行ったら、アプリの説明、利用規約の同意、プラポリの同意をすっ飛ばして権限許諾(Exposure Notification機能の有効化)だけを確認してインストールを完了する。

view0(アマビエの画面)がでた後、view1〜6画面はださずいきなりアプリのホーム画面で権限許諾を確認してインストールを完了する。

Google開発サービスが各項目に同意したユーザーデータを保持しているためと思われるが、こんなインストール方法はアカンでしょ…。

AndroidはWi-Fi接続でのインストールに問題はない。 権限拒否をやった場合、どうなるかは未検証。

moonmile commented 4 years ago

以下、調査用のメモ書きです。

利用規約等のページのスキップは UserDataService::IsExistUserData で、UserDataModel のある/なしでチェックしているのですが、これが SecureStorage に保存されています。

https://github.com/openCACAO/Covid19Radar/blob/master/Covid19Radar/Covid19Radar/Services/UserDataService.cs#L26

で、このファイルが Android の自動バックアップで書き戻されると、アンインストール後の再インストールでも UserDataModel があることになって、スキップになるかもしれません。

Xamarin.Essentials:セキュリティで保護されたストレージ - Xamarin | Microsoft Docs https://docs.microsoft.com/ja-jp/xamarin/essentials/secure-storage?WT.mc_id=docs-ch9-jamont&tabs=android

そこで、上記のように AndroidManifest.xml にバックアップをしないように android:allowBackup="false" を付けるらしいです。

この設定は、以下に 7/21 に入っています。

https://github.com/openCACAO/Covid19Radar/blob/master/Covid19Radar/Covid19Radar.Android/Properties/AndroidManifest.xml#L4

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="5" android:versionName="APP_VERSION" package="APP_PACKAGE_NAME" android:installLocation="auto">
  <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
  <application android:allowBackup="false" android:debuggable="true" android:label="@string/app_name" android:icon="@mipmap/ic_launcher">
  </application>
  <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
  <uses-feature android:name="android.hardware.bluetooth" />
  <uses-permission android:name="android.permission.BLUETOOTH" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>

という訳で、これが原因という訳ではなさそう。何だろう。

teriha8t8 commented 4 years ago

この現象が起きたのは7月末。 すもさんがやったんですが、正確な期日は覚えてないでしょうね。 私が友人2人にやってもらって同じことが起きたのが8月2日。 なのでその変更は関係なさそうですね。

moonmile commented 4 years ago

多分、何かのタイミングで SecureStorage 対象のファイルが残ってしまって(単なるローカルファイルなので)、読み込める状態になって UserDataService::IsExistUserData() でスキップされていると思うんですけど。このあたりは、もうちょっと調べないとわからなそう。

ghost commented 4 years ago

Androidでインストールテストをしたのは 8月1日です。 このツイートに4パターン検証をしました。

https://twitter.com/SumoManned/status/1289520279597719554?s=19

その後、実機デバッグなどを行っている中で EN APIが叩けずに落ちる事が分かりました。 が、「利用規約、プライバシーポリシーを許諾して初回落ちた後に再度アプリを立ち上げると アプリのHOMEが直ぐに表示される」という挙動になりました。

> UserDataService::IsExistUserData() でスキップされていると思うんですけど。

私もUserDataが正しく削除されずに2回目以降は利用規約、プライバシーポリシーをスキップしていると考えサポートに問い合わせをしてみました。返信はまだありません。

私のTwitterで本番アプリを利用した実験でも 初回にBluetoothをOFFでインストールした為、 デバッグで実行した時と同じ状態になっていた物と想像しています。

moonmile commented 4 years ago

確かに、私も

その後、実機デバッグなどを行っている中で EN APIが叩けずに落ちる事が分かりました。 が、「利用規約、プライバシーポリシーを許諾して初回落ちた後に再度アプリを立ち上げると アプリのHOMEが直ぐに表示される」という挙動になりました。

と同じ状態になった覚えがあります。そうすると、何かのはずみで EN api が叩けなかったときに、利用規約等がスキップされる状態になってしまうのかもしれません。

moonmile commented 4 years ago

ツイートを見ると、最終コミット以前のものが Google Play にアップされているようですね。 この情報だけでも結構助かります。

ghost commented 4 years ago

アプリサポートから返事が来ました。 開発チームに伝えて調査するとの事でした。

問題が有りそうな時のテンプレですが アプリに早く反映される事を願っておきます。。。