なぜ Android アプリはバージョン 1.7.1 で、アプリ内のブラウザビューを使用する代わりに、サイトを開く際に完全なブラウザを起動するように切り替わったのでしょうか?
これはおそらく このコミット だと思われます。なぜなら、ChromeCustomTab の使用を削除しているからです。
なぜ Android アプリはバージョン 1.7.1 で、アプリ内のブラウザビューを使用する代わりに、サイトを開く際に完全なブラウザを起動するように切り替わったのでしょうか?
これはおそらく このコミット だと思われます。なぜなら、ChromeCustomTab の使用を削除しているからです。
アプリは起動時に半数の確率でクラッシュするようになりました。以前のバージョンにダウングレードすることは可能ですか?
アプリの起動時にクラッシュするとのこと、お聞きして残念です。確認いたしますので、お使いの端末とAndroidバージョンをお知らせいただけますでしょうか。
ご指摘の通り、ChromeCustomTabの代わりにデフォルトブラウザを使用するように変更したのは、2020年のそのコミットで行われたもので、以前のアプリバージョン(1.6.0だったと思います)ですでに実装されていたはずです。この変更を行ったのは、ChromeCustomTabにバグがあり、機能させるには端末にChromeがインストールされている必要があったためです(多くのユーザーからアプリのChrome必須要件について不満が寄せられていました)。
Samsung Galaxy S9、Android 10、セキュリティパッチ日付 2021 年 5 月 1 日(利用可能な最新バージョン)。アプリがバックグラウンドでしばらく動作し、明示的に終了されなかった場合にクラッシュが発生すると思われます。
このコミットは 1.6.0 リリース(https://apkpure.com/discoursehub/com.discourse/versions が正しければ 2020 年 2 月)以降の日付です。削除されたコードは、ChromeCustomTab を使用せずにリンクを起動しようとした場合の失敗をすでに捕捉していたのでしょうか?それとも、Chrome がインストールされていない場合、アプリ自体が起動しなかったのでしょうか?
ありがとうございます、おっしゃる通りです。ChromeCustomTab の削除は 1.6.2 で行われましたが、これはプロダクション環境にはリリースされず(ベータ版のみでした)。したがって、実質的にこの変更は 1.7.0 で初めて導入されたものです。詳細については、Discourse Hub doesn't open forums in their PWAs - #12 by md-misko もご覧ください。Chrome 以外の環境でも動作するようになるほか、DiscourseHub から PWA を起動できるようになりました。
クラッシュ問題の修正を含むベータ版をまもなくリリースする予定です。準備ができ次第、ここにリンクを投稿します。
OK、解決策は各フォーラムにPWAをインストールすることでしょうか?いいえ、それもうまくいきません。まだFirefoxでタブが起動してしまいます(私はChromeでPWAを作成したのですが)。正直、Chromeのタブ体験が遅いと感じたことは一度もありません。もちろん、ブラウザ全体を起動するよりはるかに速いです。ハブに戻るのも素早く、ChromeタブのXを表示するために下に引っ張るだけです。
はい、PWA を使うか、ブラウザを使うかをお選びいただけます。プロンプトが表示されない場合は、デフォルト設定をリセットできます。Android の設定で「リンクを開く」を検索し、あなたのサイトの URL を見つけ、そのページで「デフォルトをクリア」をクリックしてください。これで、DiscourseHub にアクセスした際にプロンプトが表示されます。PWA がインストールされている場合は、以下のような表示になります。
また、クラッシュの問題については、ベータ版リリースチャンネルでバージョン 1.7.2 をお試しください - https://play.google.com/store/apps/details?id=com.discourse
Google アカウントをお持ちでないため、ベータチャンネルにアクセスできません(Aurora Store を使用していますが、これはベータチャンネルに対応していないようです)。
Firefox のデフォルト設定をクリアしたところ、プロンプトが表示されるようになりましたが、ブラウザのみが表示され、PWA は表示されません。
Chrome の PWA からも通知が届きませんでした。とりあえず無効化・有効化を繰り返すと、1 件の通知が届くようになりました。さらに調査し、Add to homescreen banner on Android - #62 by Falco を読むと、WebAPK 部分が私の環境では機能していないようです。WebAPK はサイトの URL に対するインテントをバインドする役割を果たすものですが、アプリケーション一覧やアプリ設定に新しいアイコンが表示されません。
私のスマホであなたのサイトを WebAPK として追加するテストを直ちに行いましたが、機能しました。ただし、時間がかかりました。他のサイトでもテストしたところ、Google からの WebAPK 生成サーバーが現時点でやや遅れているようですが、数分待つことで私の環境では機能しました。
アプリのバージョン 1.7.2 が Google Play ストアで現在公開されています(Aurora Store がどのくらいの速さでこの更新を認識するかはわかりませんが)。
Aurora ストアは Google アカウントが端末に設定されていなくても Play ストアを利用します(匿名アカウントを使用してトークンを取得するため)。
そのため、Google のサーバー経由で Google アカウントの作成が必要であれば、WebAPK が機能しないのかもしれません。
あるいは、Chrome が WebAPK のインストールのために Google Play を呼び出すためです(chromium/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java at main · chromium/chromium · GitHub Google アカウントが必要です。
つまり、Chrome のインストールに関するユーザーの不満に対応するために、ChromeCustomTab を削除し、代わりに WebAPK を活用するワークフローに変更しました。しかし、WebAPK は意図通りに機能させるには Chrome(または Samsung ブラウザ)と Google アカウントが必要です。そのため、アクセシビリティが低下しています。また、デフォルトブラウザのカスタムタブ実装を利用する方法もあり、私のアプリの約半分は Chrome 版ではなく「Powered by Firefox」版として提供されています。
これについて調査したところ、以下の情報が見つかりました。
また、私の端末で Firefox のカスタムタブを正しく使用している実装例はこちらです。
そこで、この追加検出機能を盛り込んで再実装していただけないでしょうか。そうすれば Chrome への依存を適切に排除し、アプリを再び実用的なものにできるはずです。
問題は、ユーザーに選択肢を与えたいということです。CustomTabs に戻して(Chrome 限定の問題を修正しても)、それはユーザーに選択肢を与えるものではなく、常にカスタムタブを強制することになります。そのため、ブラウザや PWA でサイトを開きたいユーザーは困ってしまいます。あの状態には戻せません。
しかし、ブラウザや PWA の選択肢に加えて、アプリ内カスタムタブもオプションとして追加できるか検討してみます。少し難しいですが、100% 実現可能かどうかはわかりません。それでも試してみます。
このタスクに取り掛かるまで少し時間がかかるかもしれませんが、テスト可能なベータ版ができ次第、お知らせします。
週末に少し時間ができたので、カスタムタブに戻せるようにしたAndroidアプリの更新版(1.7.3)を今すぐ公開しました。画面右下に新しいボタンがあり、そこから設定画面を開いて切り替えが可能です。アップデート後、どのように動作するかお知らせください。
Google Play に更新されたアプリが表示されません。Google の承認審査で止まっているのでしょうか?
本日到着予定でした。申し訳ありません(Play ストアの UI は、段階的なロールアウトがデフォルト設定になっています)。
期待通りに動作しています。設定を有効にするとChromeのタブが開き、無効にするとフルブラウザが起動しました。迅速な更新をありがとうございます🙂
このバージョンではクラッシュは解消されましたが、新しい 1.7.3 バージョンでは再び頻繁にクラッシュしてしまいます。
私はベータチャンネルを使用していますが、Play ストールのベータ版と本番版でこれらのバージョンは同期されていますか?
[編集]: 「サイトを開く」設定で「アプリ内ブラウザ」を有効にすると、PWA 対応サイトは引き続き別アプリとして開きます(これは想定通りです)。ただし、クラッシュの頻度は大幅に減少し、ほとんど発生しなくなります。逆に、この設定を無効にすると、アプリが毎回クラッシュしてしまいます。