Open17

プラットフォームの制限で実現が不可能・難しい仕様を挙げていくスクラップ

中條 剛(ちゅーやん)中條 剛(ちゅーやん)

「これくらいできるでしょ?」と言われがちだけどプラットフォームの制約で実現できない、もしくは実現しづらい仕様を列挙するスクラップです。

とりあえず雑に挙げるだけ挙げるのが目的ですので、重複や誤りを気にせず書き込んでいってください。言い方を変えると、ここに列挙された項目が正しいかどうかは保証されませんので、そのまま参考にはしないでください。

「難しいけど一応できるらしい」の参考 URL がある場合は一緒に貼っていただけると助かります。

中條 剛(ちゅーやん)中條 剛(ちゅーやん)
  • 実現が不可能(Android / iOS 共通)
    • アプリを閉じても裏で常に任意の処理を動かし続ける
    • 任意のアプリをインストールさせる
  • 要調査
    • 任意のアプリを起動する
    • 任意のアプリがインストール済みかどうかを判定する
中條 剛(ちゅーやん)中條 剛(ちゅーやん)
  • 実現が難しい(Android)
    • バックキーでホーム画面に戻るがアプリは終了せず裏で生きたままにしておく
中條 剛(ちゅーやん)中條 剛(ちゅーやん)

ありがとうございます!これまさについ先ほど知りました。
動作確認はまだなのですが、 moveTaskToBack って、ホーム以外の戻り先がある場合(たとえば別アプリから自分のアプリに遷移してきた場合)もホームに戻ってしまう感じでしょうか?もし分かりましたら。

miyaken12miyaken12

OS APIで呼び出すデザインがほぼ固定されてるUIとかですかね🧐

稀にOSのパーミッションダイアログ(通知、ATTなど)のデザイン変更できない?って言われた経験あり

中條 剛(ちゅーやん)中條 剛(ちゅーやん)

これもありそう、、!
実装難易度とは別ですが、パーミッションダイアログの前に出す説明用の自作ダイアログも審査で内容ツッコまれたりしますよね。

picpiepicpie

IMEとかキー入力をごにょごにょする iOS
Bluetoothでキーボードのマネして他マシンからはキーボードとして見えるようにする iOS

中條 剛(ちゅーやん)中條 剛(ちゅーやん)

キーボードまわりもいろいろありそうですね、、!

Android の場合だとキーボードもアプリでカスタマイズできるので、そのあたりの考慮事項もありそうです。

中條 剛(ちゅーやん)中條 剛(ちゅーやん)

音声再生・録画まわりもいろいろありそう。(そして Android / iOS でけっこう事情が異なりそう)

  • 他アプリが音声を再生している最中でも自アプリで音声を再生したり録音できたりするかどうか。
  • アプリが前面に出ていないタイミングで音声再生・録音ができるかどうか。
koji-1009koji-1009

Androidはaudioのbytesを再生することができますが、iOSは一度ファイルに書き出さないと再生できないですね。Webはbytesの再生が可能なので、Flutterだと話がややこしくなります。

中條 剛(ちゅーやん)中條 剛(ちゅーやん)

そんな違いがあるんですね!ファイルに書き出さないといけないということは、ストリーム再生的なものがやりづらかったりするのでしょうか?(完全に想像ですが)
たしかに Flutter 目線で考えちゃうと Web の話まで入ってきてこんがらがりそうです。

koji-1009koji-1009

ストリーム再生的なものがやりづらかったりする

ですです。URLを参照させることはできるので、URLを引数にするとできる(はず)なのですが、諸事情でbytesを引数にしようとすると実行できません。無理やり、tmpファイルに一度書き出す、みたいなワークアラウンドが必要になります。

https://developer.apple.com/documentation/avfoundation/avplayer/
https://github.com/bluefireteam/audioplayers/blob/audioplayers-v5.2.1/packages/audioplayers/lib/src/source.dart#L70

中條 剛(ちゅーやん)中條 剛(ちゅーやん)

なるほどー。記事を書くにあたり自分でも1から調べつつ動作確認しつつかな、と思っていましたので、情報助かります!