プラットフォームの制限で実現が不可能・難しい仕様を挙げていくスクラップ
「これくらいできるでしょ?」と言われがちだけどプラットフォームの制約で実現できない、もしくは実現しづらい仕様を列挙するスクラップです。
とりあえず雑に挙げるだけ挙げるのが目的ですので、重複や誤りを気にせず書き込んでいってください。言い方を変えると、ここに列挙された項目が正しいかどうかは保証されませんので、そのまま参考にはしないでください。
「難しいけど一応できるらしい」の参考 URL がある場合は一緒に貼っていただけると助かります。
- 実現が不可能(Android / iOS 共通)
- アプリを閉じても裏で常に任意の処理を動かし続ける
- 任意のアプリをインストールさせる
- 要調査
- 任意のアプリを起動する
- 任意のアプリがインストール済みかどうかを判定する
- 実現が難しい(Android)
- バックキーでホーム画面に戻るがアプリは終了せず裏で生きたままにしておく
BackHandler で処理を奪って moveTaskToBack(true)
を呼べばできますよ〜
ありがとうございます!これまさについ先ほど知りました。
動作確認はまだなのですが、 moveTaskToBack
って、ホーム以外の戻り先がある場合(たとえば別アプリから自分のアプリに遷移してきた場合)もホームに戻ってしまう感じでしょうか?もし分かりましたら。
ちょっと細かい部分なのですが、カメラ等の権限を後から変更してアプリに戻った時の再起動を避けるのは不可能ですね。
ありますね!たしかに昔これでハマった記憶が、、こういうのどんどん挙げていきたいです!
- どれくらい難しいのか未調査
- アプリが閉じている状態で音を出す
OS APIで呼び出すデザインがほぼ固定されてるUIとかですかね🧐
稀にOSのパーミッションダイアログ(通知、ATTなど)のデザイン変更できない?って言われた経験あり
これもありそう、、!
実装難易度とは別ですが、パーミッションダイアログの前に出す説明用の自作ダイアログも審査で内容ツッコまれたりしますよね。
IMEとかキー入力をごにょごにょする iOS
Bluetoothでキーボードのマネして他マシンからはキーボードとして見えるようにする iOS
キーボードまわりもいろいろありそうですね、、!
Android の場合だとキーボードもアプリでカスタマイズできるので、そのあたりの考慮事項もありそうです。
音声再生・録画まわりもいろいろありそう。(そして Android / iOS でけっこう事情が異なりそう)
- 他アプリが音声を再生している最中でも自アプリで音声を再生したり録音できたりするかどうか。
- アプリが前面に出ていないタイミングで音声再生・録音ができるかどうか。
Androidはaudioのbytesを再生することができますが、iOSは一度ファイルに書き出さないと再生できないですね。Webはbytesの再生が可能なので、Flutterだと話がややこしくなります。
そんな違いがあるんですね!ファイルに書き出さないといけないということは、ストリーム再生的なものがやりづらかったりするのでしょうか?(完全に想像ですが)
たしかに Flutter 目線で考えちゃうと Web の話まで入ってきてこんがらがりそうです。
ストリーム再生的なものがやりづらかったりする
ですです。URLを参照させることはできるので、URLを引数にするとできる(はず)なのですが、諸事情でbytesを引数にしようとすると実行できません。無理やり、tmpファイルに一度書き出す、みたいなワークアラウンドが必要になります。
なるほどー。記事を書くにあたり自分でも1から調べつつ動作確認しつつかな、と思っていましたので、情報助かります!