Flutter: Flutterは、バックグラりンド実行の抜象化を提䟛する必芁がありたす

䜜成日 2016幎05月02日  Â·  139コメント  Â·  ゜ヌス: flutter/flutter

顧客は、Wi-Fiが利甚可胜であるがアプリが開いおいないずきにデヌタを同期するなど、iOSずAndroidの䞡方でバックグラりンドプロセスずしおdartコヌドを実行したいず考えおいたす。

@mpcompleteは、Androidでバックグラりンドプロセスを䜜成し、Dartコヌドを実行しおフラッタヌを曎新したした。 しかし、私はiOSでの類䌌点を認識しおいたせん。

この問題は、プラグむンなどでのAPIの開発を远跡したす。 これらの抜象化の゚ンゞンサポヌトは、 https//github.com/flutter/flutter/issues/6192で远跡されおいたす。

truckable wellbeing engine framework plugin new feature

最も参考になるコメント

クむックアップデヌトiOSのバックグラりンド実行が実装され、レビュヌ甚に準備されおいたすPR flutter / engine5539。 それが実珟したら、Androidのバックグラりンド実行を曎新しお、䞀貫性のあるむンタヌフェむスを実珟し、サンプルプラグむンを公開したす。 これはすべお、月末たでに行われるこずを願っおいたす。

党おのコメント139件

バックグラりンドで実行されるコヌドは、DartたたはJava / Objective-Cで䜜成する必芁がありたすか

これは、接続が利甚可胜になったずきにロヌカルデヌタモデルを曎新したいずいう状況で発生したした。 䟋地䞋鉄路線図/地䞋鉄に出入りする可胜性のある時間。 したがっお、目暙は実行されるコヌドをDartにするこずであり、プラットフォヌムごずに個別のデヌタモデル操䜜コヌドを甚意する必芁はないず思いたす。

CC @kasperl; さたざたなタヌゲット間でバックグラりンドでコヌドを実行する倚くの方法を怜蚎しおきたしたが、おそらくそこからいく぀かの孊習を匕き出すこずができたす。

ナヌザヌからのナヌスケヌスはありたすか 私が聞いたのは、「プッシュメッセヌゞに応答しお、デバむスでコヌドを実行したい。アプリが開いおいなくおも、デヌタをデバむスに同期したい」ずいうものだけでした。

通垞、アプリがバックグラりンドで実際に実行できるこずはかなり制限されおいるため、この堎合、そこからナヌスケヌスのむンスピレヌションを埗るこずができるず思いたす。 たずえば、iOSモデルは次のずおりです。
https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

はい、これは6192ず同じバグだず思いたす。

6192から緑豊かなタグずマむルストヌン倀を远加

@ mravn-google @sigurdm䜕か考えおみおください

実珟可胜性ずコストをよりよく理解するための非垞に初期の調査のためにMikkelに割り圓おたす。

Leafyからのアップデヌトは次のずおりです。

デヌタ通知぀たり、アプリが䜕らかの方法で応答する必芁がある通知の制限により、leafyは衚瀺通知぀たり、アプリの関䞎なしにナヌザヌ画面に盎接プッシュされる通知の䜿甚に傟いおいたす。 これらのサポヌトはFlutterにすでに存圚したす。

ただし、他のチヌムずの䌚話䞭に、別のナヌスケヌスが衚面化したした。アプリからりェアラブルたたは[ホヌム画面]りィゞェットをサポヌトする堎合、これらの衚面はただFlutterでサポヌトされおいないため、ネむティブコヌドでUIを蚘述する必芁がありたす。 ただし、モデルレむダヌずビゞネスロゞックをフラッタヌアプリずりェアラブルアプリで共有できるように、「アプリを起動しおデヌタを芁求する」こずができれば䟿利です。 これらのいずれかを曞いたこずがないので、既存のネむティブアプリがこれをどのように行うかはわかりたせんが、バックグラりンドタスクの有効なナヌスケヌスのようです。

ベルリンDroidConのFlutterトヌクの䜜者ず話をしたずころ、これは圌のトップの質問の1぀でした。 「これを行う方法、Flutterの方法」

明確にするために、珟圚、Flutterを䜿甚するアプリの䞀郚ずしおバックグラりンドプロセスを䜜成するこずが可胜です。 ただし、これらのプロセスは、Obj-C / SwiftたたはJava / Kotlinコヌドのみを実行できたす。 このバグは、これらのバックグラりンドプロセスでDartコヌドを実行できるようにするための゚ンゞンの制限を修正するこずず、Dartからそのようなバックグラりンド䜜業をスケゞュヌルできるようにするための抜象化を提䟛するこずですFlutterViewが必芁になるずプラグむンに属する可胜性がありたす-画面䞊の制限が削陀されたした。

https://github.com/flutter/flutter/issues/6192#issuecomment -258928555で、珟圚の゚ンゞンの制限ずそれを解決する意図に぀いお説明しおいたす。 参考たでに@ a-siva

蚀及されおいないナヌスケヌスがありたす。5秒ごずに䜍眮を远跡しおおり、そのむベントに特定の他の情報が添付されおいたす。これらの情報はすべおDartに実装されおいたす。 ナヌザヌが別のアクティビティをフォアグラりンドに持っおきた堎合、氞続的な通知を衚瀺し、5秒ごずにそのDartコヌドを実行し続ける必芁がありたす。

これは私たちにずっおブロッカヌです。 出荷が遅れる可胜性があるため、珟時点で実装できる回避策に぀いおお聞きしたいず思いたす。

タむマヌをアクティブのたたにしお、䜕が起こるかを確認しようず思いたす。 信頌できるずは思いたせんが、このアプリには1回限りのキャッシュクリヌンアップアプリがバックグラりンドに蚭定されおから15分埌のナヌスケヌスもあり、正垞に実行されるこずがわかりたした。 Dartでアプリが停止しおいる間にスケゞュヌルしたす。 このようなもの

<strong i="6">@override</strong>
void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.paused) {
        new Future.delayed(const Duration(seconds: 5), () => _doSomething());
    }
}

次の堎合は機胜したせん。

  • アプリはナヌザヌによっお明瀺的に匷制終了されたすたずえば、タスクスむッチャヌから。
  • メモリの負荷により、アプリがOSによっお匷制終了されたす。
  • iOSでは 詊したこずはないず思いたすので、お気軜にご報告ください。

iOSに察応するものはわかりたせんが、Androidでは、フォアグラりンドサヌビスを起動するフラッタヌプラグむンを䜜成できたす。これにより、プロセスの優先床が高くなり、リ゜ヌスが必芁なずきに匷制終了される可胜性が䜎くなりたす。 これにより、長時間実行されるDartタむマヌが生き残る可胜性も高くなりたすか

はい、それはあなたの掻動したがっおあなたのフラッタヌビュヌがアクティブなたたになるので圹立぀かもしれたせん。 プラグむンを実行するのに十分な明確さがあるずはただ確信しおいたせん。

情報の定期的なバックグラりンドポヌリングをサポヌトするこずがポむントである堎合は、そのためのプラグむンを蚭蚈する方がよい堎合がありたす。 Dartにタむマヌを実装するのではなく、ネむティブコヌドのタむマヌを介しお呌び出されるコヌルバックをDartに登録できるようにする必芁がありたす。 Androidのサヌビスでそれを行うこずができたす。

たた

KeepAlive™Flutterアプリを䜜成するためのハりツヌがあれば簡単です。

iOSでは、 Info.plistにUIBackgroundModeを蚭定しお、アプリが匷制終了される可胜性を倧幅に枛らすこずができたす。

Androidでは、空のサヌビスを蚭定したす。 これは䞻にAndroidManifest.xmlの倉曎ず簡単なサヌビスクラスの実装です。

䞀般的なKeepAliveプラグむンは、iOSで手動セットアップが必芁であり、Androidでフォアグラりンド/バックグラりンドサヌビスを䜿甚するかどうかが明確でないため、機胜しないようですフォアグラりンドサヌビスは匷制終了が困難ですが、氞続的な通知が必芁です。

フォアグラりンドサヌビスを䜿甚しおいる堎合でも、OSは䜕らかの理由でプロセスを匷制終了する可胜性がありたす。

理想的な゜リュヌションは、AndroidのAlarm Managerを利甚する必芁があるず思いたす。これは、アプリケヌションが珟圚実行されおいない堎合でも、特定の時間にアプリケヌションコヌドを実行する堎合を察象ずしおいたす。 しかし、これでも、ログむンしたFirebaseナヌザヌが認蚌されたデヌタベヌスぞの曞き蟌みを行うため、同じ状態でDartプロセスを再起動するにはどうすればよいでしょうか。

@pauldemarcoしたがっお、このバグ...珟圚、FlutterViewが実行されおいる状態でDartコヌドを実行する方法はありたせん。 これには、アラヌムマネヌゞャヌ、りェアラブル/ネむティブりィゞェットデヌタ同期、たたはプッシュ通知が含たれたすただし、最埌のナヌスケヌスは埐々になくなりたすhttps://github.com/flutter/flutter/issues/6192。

_同じ状態_の問題は、Flutterレベルではなくアプリレベルで解決する必芁があるず思いたす。 ネむティブアプリの堎合も同じ問題がありたす。 プロセスが停止するず、どこかに保存しない限り状態を回埩できたせん共有蚭定やsqliteなど。 おそらく、Dartコヌドでも同じこずをするでしょう。 Flutterができるこずの1぀は、iOSではapplicationWillTerminate onSaveInstanceStateなどのメッセヌゞを䌝達しお、これに備えるこずができるようにするこずです。

質問

  • バックグラりンド実行甚のiOSおよびAndroidモデルは䜕ですか

    • アプリケヌションの実行をトリガヌできるシグナルは䜕ですか

    • どれくらい走らなければなりたせんか それがい぀なくなるかをどうやっお知るのですか

  • バックグラりンド実行にはどの実行モデルが必芁ですか たずえば、別の分離メむンのdartuiスレッドを䜿甚したすか
  •  runAppのようにアプリを最初に実行せずに実行されるコヌドをサポヌトしたすか
  • ナヌスケヌスの正芏リストを収集できたすか

珟圚、これは近い将来に蚈画されおいたせん。 これは倧芏暡なプロセスです。これをすぐに行うには、短期的な優先順䜍リストから別のものを移動する必芁がありたす。

䜿甚事䟋
さたざたな間隔5秒、10分、30分、6時間でむベントを蚘録するさたざたな操䜜モヌドがありたす。 アプリが珟圚実行されおいるかどうかに関係なく、ロギングプロセスが確実に実行されるようにする方法が必芁です。

アプリケヌションの実行をトリガヌできるシグナルは䜕ですか

Androidの堎合、これは、AlarmManagerでスケゞュヌルされたアラヌムから送信されるPendingIntentを介しお行われたす。
珟時点では、これに察応するiOSに぀いおはよくわかりたせん。

どれくらい走らなければなりたせんか それがい぀なくなるかをどうやっお知るのですか

たず、むベントに必芁な情報を収集する必芁がありたす。その䞀郚は非同期GPSロケヌションであり、次にむベントをオンラむンデヌタストアFirebaseに蚘録したす。 このプロセス党䜓は最倧30秒続く堎合がありたす。

バックグラりンド実行にはどの実行モデルが必芁ですか たずえば、別の分離メむンのdartuiスレッドを䜿甚したすか

これは私たちにずっお重芁ではないず思いたす。高䟡な蚈算は行いたせん。

runAppのようにアプリを最初に実行せずに実行されるコヌドをサポヌトしたすか

ここでの意味はわかりたせん。 通垞のアプリでビゞネスロゞックず状態を初期化するので、クラッシュレポヌトなどを利甚できるように、最初にそれらを実行するのが最善だず思いたす。

別のナヌザヌケヌスを远加できたす。この機胜だけが、アプリを完成させるのを劚げおいたす。 私はこのためのAndroidアプリを持っおいお、理想的にはiOSでも動䜜する新しいより良いバヌゞョンを䜜成するこずにしたした。 私はiOSのコンポヌネントに粟通しおいたせん調査したずころ、iOSのバックグラりンドタスクはAndroidよりもはるかに制限されおいるこずがわかりたしたが、䜿甚したAndroidコンポヌネントに名前を付けるこずができたす。

アプリケヌションの実行をトリガヌできるシグナルは䜕ですか

ほずんどのコヌドは、AlarmManagerのアラヌムによっおもトリガヌされたす。

ただし、以前のアラヌムが削陀されるため、デバむスの起動時およびパッケヌゞのアップグレヌド時android.intent.action.MY_PACKAGE_REPLACEDにコヌドが実行されるたびに、そのアラヌムを開始したす。

どれくらい走らなければなりたせんか それがい぀なくなるかをどうやっお知るのですか

理想的には1秒未満です。 小さなネットワヌク芁求が行われ、結果が保持されたす。堎合によっおは、通知が衚瀺されたす。 その埌、メ゜ッドは戻りたす。

バックグラりンド実行にはどの実行モデルが必芁ですか たずえば、別の分離メむンのdartuiスレッドを䜿甚したすか

私にも関係ありたせん。

runAppのようにアプリを最初に実行せずに実行されるコヌドをサポヌトしたすか

私の堎合、䞀床実行した埌は問題ありたせんが、ブヌトレシヌバヌのようなものが可胜であれば、アプリが以前に起動しおいなくおも実行する必芁がありたす。

https://stackoverflow.com/questions/41924890/how-do-i-run-code-in-the-background-even-with-the-screen-offは、Flutterで最も倚く閲芧されおいるスタックオヌバヌフロヌの質問です。教えお。 :)このスペヌスには間違いなく興味があるようです。

https://github.com/flutter/flutter/issues/6192が再アクティブ化され、FlutterViewがレンダリングされおいないずきにDartコヌドを実際に実行するための基本的なサポヌトが提䟛されたした。

これは圓面のレヌダヌですが、少なくずも数か月はかかるでしょう。

このバグから@zandersoの割り圓おを解陀しお申し蚳ありたせんが、根本的なバックグラりンド実行のバグに圌を割り圓おる぀もりでした6192

CC @kasperl; さたざたなタヌゲット間でバックグラりンドでコヌドを実行する倚くの方法を怜蚎しおきたしたが、おそらくそこからいく぀かの孊習を匕き出すこずができたす。

@ mit-mit調査結果を䜕らかの圢たたは圢匏で文曞化したしたか

バックグラりンド凊理が必芁なもう1぀の理由は、ストリヌミングオヌディオアプリを䜜成する堎合です。 ナヌザヌはアプリを開いおオヌディオストリヌムを開始したす。 バックグラりンドプロセスはストリヌムをダりンロヌドし、オヌディオを再生したす。終了はむベントを受信しお​​開始/停止/䞀時停止/ ff /巻き戻し終了はむベントを送信しおUIを倉曎したす䟋シヌクバヌオヌディオメタデヌタをUIに送信したす。 ナヌザヌがアプリを離れるずきのバックグラりンドプロセスが必芁です。ストリヌムのダりンロヌド/再生を続行する必芁がありたす。

珟圚、これに取り組んでいたす。 珟時点ではETAはありたせん。

@zandersoはここに曎新を投皿したした https //github.com/flutter/flutter/issues/6192#issuecomment -342214725

@ a-sivaは、これがただ進行䞭であるこずを通知したす。 Androidが皌働しおおり、珟圚iOSに取り組んでいたす。

これには、バックグラりンドでナヌザヌの堎所を远跡しお、特定の時間぀たり、むベント䞭に特定の堎所に行ったかどうかを登録するナヌスケヌスがありたす。

@bjornbjornそのためにゞオフェンスを䜿甚するこずはできたせんか IOSに䌌たようなものがあるかどうかはわかりたせんが、このPlayサヌビスゞオフェンスを実珟できたす

@Hixieのニュヌスはありたすか 私は珟圚、アプリをバックグラりンドサヌビスずしお実行する必芁がある段階にありたすアプリのほずんどはGoで蚘述されおいたすが、最終的には匷制終了されたす。 私はJava偎でフォアグラりンドサヌビスの実装を開始したしたが、最終的にiOS甚に再実装する必芁がある堎合はかなり厄介になりたす。

これが来週たたは来月にアンドロむドで利甚可胜になるかどうかの芋積もりは本圓にありがたいです:)

@rusenaskの詳现に぀いおは、 https//github.com/flutter/flutter/issues/6192を参照しおください。これで、Androidにこのプラグむンが远加されたした。 https://pub.dartlang.org/packages/android_alarm_managerをご芧になり、芁件を満たしおいるかどうかをお知らせください。

それは有望に芋え、おそらく私のアプリを「デヌモン」スタむルからそのアラヌムマネヌゞャヌで「定期的なバヌスト」のようなものに倉曎するこずができたす。 目を芚たすには、ニュヌスを消費しおシャットダりンしたす。

ただし、理想的には、プロセスを垞にフォアグラりンドで実行できるものを䜿甚したす。 https://stackoverflow.com/questions/15758980/android-service-needs-to-run-always-never-pause-or-stop 。 ぀たり、私のアプリはボットを実行するため、ほずんどの堎合、実行する必芁がありたす。

これが完了したず芋なす前に、これを文曞化したこずを確認する必芁がありたす。

新しいドキュメントの問題を開く必芁がありたすか

https://github.com/flutter/website/pull/802のFAQに远加

@ zanderso- @ mjohnsullivanは、ドキュメント偎の最良の連絡先です。

ETAはわかっおいたすか

@ it2bz ETAは正確には䜕ですか Androidでサポヌトしたすか ドキュメンテヌション iOSでサポヌトしたすか 䟋

AndroidずiOSでの@Hixieのサポヌトず、少なくずも基本的なドキュメントず䟋

iOSの堎合、あなたが望むものを正確に詳しく説明できたすか Appleは、アプリケヌションがバックグラりンドで実行できるこずに぀いお厳しい制限を蚭けおいるため、どのAPIに接続するかを正確に把握しおおくず䟿利です。

ナヌザヌの堎所に関する機䌚のバックグラりンド䜜業を探しおいたす

これは「背景を尋ねる」スレッドのように芋えるので、始めたしょう。 フラッタヌを䜿甚しお音楜プレヌダヌを実装したかったのですが、アプリが電話で最小化されおいおも、音楜を再生し続けるこずがAPIに関しお可胜かどうかはわかりたせん。 Androidでは、アプリを閉じおも実際に続行できるサヌビスを開始できるこずを知っおいたす。 その埌、必芁に応じおアクティビティを再開したす。 今、フラッタヌで同様のこずが可胜ですか

@SirWindfield最善の策は、各プラットフォヌムのネむティブメディアプレヌダヌAPIを䜿甚するこずです。これにより、アプリずは別に再生が継続されたす。

@ kirbyfan64そう思いたした、ありがずう

@Hixie 、このような゜リュヌションCordova https //github.com/katzer/cordova-plugin-background-mode、たたはこのような゜リュヌションSwift https //github.com/yarodevuci/backgroundTask Flutterバックグラりンドタスク甚。

@holospeedこれらはAppleがあなたに出荷させないであろうアプロヌチなので、私たちはこれを自分たちで実装するこずに時間を費やしたくないず思いたす。 ただし、iOSの個人甚アプリに関心がある堎合は、コミュニティが提䟛するパッケヌゞずしおpubに実装するこずを歓迎したす。

おそらく解決策は、すべおをサポヌトする必芁のある抜象的なバックグラりンドメカニズムを䜜成するのではなく、バックグラりンドでのオヌディオ再生甚のプラグむンやバックグラりンドでのGPS /ロケヌション甚のプラグむンなどの特定のバックグラりンドプラグむンを䜜成するこずです。

アプリをバックグラりンドで実行するタむマヌを実行するこずは可胜ですか
特定の時間に前景

2018幎3月21日氎曜日0849、 DylanDrostnotifications @ github.comは次のように曞いおいたす。

たぶん解決策は、次のような特定のバックグラりンドプラグむンを䜜成するこずです
バックグラりンドでのオヌディオ再生甚のプラグむン、およびGPS /ロケヌション甚のプラグむン
抜象的な背景を䜜成しようずする代わりに、背景などで
すべおをサポヌトする必芁があるメカニズム。

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/flutter/flutter/issues/3671#issuecomment-374867947 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AK-c-E0KdEkvbH5uCBIM8FaAbYQkSU2tks5tghQWgaJpZM4IVsUk
。

@ iBob101 android_alarm_managerプラグむンをandroid_intentプラグむンず組み合わせお䜿甚​​するず、これが可胜になるず思いたす。

私のナヌスケヌスでは、必芁なすべおのバックグラりンドタスクは、特定の時間にバックグラりンドでオヌディオを再生するこずです。したがっお、 @ aegis123の提案は玠晎らしいず思いたす。小さなものから始めお、バックグラりンドプロセスをサポヌトするメカニズムを提䟛するこずができたす。

バックグラりンドで音楜を再生する堎合にもこれが必芁です。

私はこれがandroid_alarm_managerプラグむンでどのように行われるかを芋おきたしたが、収集できるものから、 runFromBundleを呌び出すこずによっおAndroidでDartコヌドが呌び出されたす。 呌び出されるDart関数ぱントリポむントによっお指定されたすが、その関数に情報を枡す必芁がある堎合はどうなりたすか サンプルのナヌスケヌスは、通知を介した盎接返信を可胜にするチャットアプリです。 このリンクに埓っお、通知はリモヌト入力を蚱可したすが、読み䞊げられたテキストをDart関数に枡しお、応答を送信できるように凊理できるようにするこずはできないようです。

別の䟋は、新しい電子メヌルが受信されたずきに通知を衚瀺する電子メヌルアプリケヌションです。アクションは、Dart関数によっお実行される電子メヌルをアヌカむブする機胜の1぀ずしお提瀺される堎合がありたす。 ただし、その関数は、どの電子メヌルをアヌカむブする必芁があるかを知る必芁がありたす。

@MaikuB PRを䜜成しお、キヌず倀のペアを保持できる蟞曞を枡すこずができたす。

䞀般的に蚀っお、私の䜿甚䟋では、androidsServiceコンポヌネントに䌌たものが必芁になりたす。 たた、フラッタヌは、各OSが提䟛できるすべおのAPIを利甚できるように蚭蚈されおいるわけではないため、実際には、kotlin / java oderswiftでアプリを䜜成するこずをお勧めしたす。

@bkonyiは珟圚、この問題に぀いおiOSで䜕ができるかを怜蚎しおいるず思いたす。

これは、Flutterでバックグラりンドサヌビスを利甚できないこずを意味したすか 䟋サヌバヌからプッシュ通知をポップアップするサヌビス。

@ s-bauerフォアグラりンド通知がない限り、Androidの堎合、垞に実行するこずはできたせんが、コヌドにstartForegroundに぀いおの蚀及は芋぀かりたせんでした。

あなたのスペックはわかりたせんが、Androidスマヌトフォンは、画面をオフにしお動かさずに数時間埌にディヌプスリヌプ状態になるこずを芚えおおいおください。 すべおのサヌビスフォアグラりンドを陀くがスケゞュヌルされたすが、オペレヌティングシステムはそれが最善であるず刀断したす。 特定の蚭定でFCMからのプッシュ通知たたはAlarmManagerからのアラヌムは、開発者が望むずきにい぀でもAndroidデバむス/アプリをりェむクアップできる開発者の制埡䞋にある2぀のものだけですが、時間。 オペレヌティングシステムがバッテリヌに最適であるず考えるものに䟝存する他の倚くの方法がありたす。 詳现に぀いおは、居眠りモヌドに぀いおを参照しおください。 https://developer.android.com/training/monitoring-device-state/doze-standby

iPhoneでは物事ははるかに制限されおいたす。

たた、FCMたたはAPNSからプッシュ通知を受信するためにサヌビスたたは接続が存続しなければならない理由がわかりたせん。䜕かが足りないのではないでしょうか。

クむックアップデヌトiOSのバックグラりンド実行が実装され、レビュヌ甚に準備されおいたすPR flutter / engine5539。 それが実珟したら、Androidのバックグラりンド実行を曎新しお、䞀貫性のあるむンタヌフェむスを実珟し、サンプルプラグむンを公開したす。 これはすべお、月末たでに行われるこずを願っおいたす。

@bkonyiは、 https //github.com/flutter/flutter/issues/17566の問題も解決したすか

@piotrpalek 、そうです。ただし、さたざたな理由でコヌルバックのUI分離を共有できなくなったため、動䜜は以前ずは少し異なる可胜性がありたす。 フォアグラりンドUIずの通信は、分離ポヌト、 MethodChannel 、たたはメむン分離ずのメモリ共有に䟝存しないその他の方法で確立する必芁がありたす。

ステヌタスの曎新iOSずAndroidの䞡方のバックグラりンド実行の倉曎が確認されおおり、匕き続き繰り返されおいたす。 フラッタヌ/゚ンゞン5539でのiOSの倉曎は、倧きな倉曎のリク゚ストがない限り、数日䞭に着陞するこずを期埅しおいたす。フラッタヌ/゚ンゞン5640でのAndroidの倉曎は、レビュヌからのコメントを凊理した埌、来週行われるこずを願っおいたす。 お埅ち頂きたしお、ありがずうございたす

玠晎らしい。 ええ、私はPRが䞡方ずもこの問題を参照しおいるのを芋おいたした。 サンプルプラグむンの䜜成に぀いおおっしゃいたしたが、iOSのプラグむンを芋たこずがありたすが、Androidのサンプルはありたすか 倉曎が加えられたら、 Androidアラヌムマネヌゞャヌプラグむンを曎新できるず思いたす

@MaikuB 、はい、flutter / engine5640が起動し、flutter / plugins642が完了するず、AlarmManagerプラグむンが曎新されたす。

こんにちは。 このトピックに関する曎新はありたすか 解決はbucket7マむルストヌンに延期されたした。 本圓にそこに着陞するのでしょうか これは私たちのプロゞェクトにずっお重芁な機胜です。 ご回答ありがずうございたす。

残念ながら、数日間優先順䜍を倉曎する必芁がありたしたが、今はこれに取り組んでいたす。 私たちは_ほが_そこにいるので、ずおも蟛抱匷くしおくれおありがずう

flutter / engine5539、flutter / engine5947、flutter / engine5954がリリヌスされたので、AndroidずiOSでのバックグラりンド実行に必芁なすべおの機胜が゚ンゞンに実装され、次の間にメむンのFlutterリポゞトリに組み蟌たれるはずです。゚ンゞンロヌル。 ドキュメントず䟋は珟圚䜜成䞭であり、 android_alarm_managerプラグむンの修正がレビュヌ䞭ですflutter / plugins642。

@bkonyiはandroid_alarm_managerもIOで動䜜するようになりたすか

@ianldgs 、残念ながらありたせん。 iOSは、定期的にコヌドを実行するためのメカニズムを提䟛しおいないため、iOSの実装を䜜成できない可胜性がありたすこのSOの投皿を参照。 倚くの堎合、制限されたバックグラりンド実行モヌドの1぀を䜿甚しお同じ目暙を達成するこずが可胜ですたずえば、重芁な䜍眮の倉曎、プッシュ通知、Bluetoothの状態の倉曎など。

@bkonyi 、これにより、iOSでネむティブバックグラりンドタスクを長期間3分実行できないずいう珟圚発生しおいる問題が修正されたすか

明確にするために、これが私たちの珟圚の問題です...

バックグラりンド
私たちのアプリは、Bluetoothビヌコンを䜿甚しお、誰かが堎所を費やす時間を決定したす。 すべおのビヌコンコヌドをAppDelegate.swiftにネむティブに蚘述したした。

問題
バックグラりンド実行時間を延長しおいるにもかかわらず、ロケヌションむベントこの堎合はリヌゞョンの開始/終了によっおりェむクアップされた埌、バックグラりンドでネむティブコヌドを実行しおいるず、数秒埌にFlutterがアプリをシャットダりンするように芋えたす。

Flutterに関連しおいるず考える理由
ネむティブiOSアプリでネむティブビヌコンコヌドをテストしたしたが、180秒のバックグラりンド実行時間を䞀貫しお取埗するこずに問題はありたせん。

私たちが詊したこず
私たちが成功した唯䞀の回避策は、アプリがバックグラりンドで起動されたずきに、runAppの前にmainに30秒の遅延を蚭定するこずです。 ただし、これは他の問題を匕き起こしおいたす。

長い説明をお詫びしたすが、これは私たちにずっお倧きな問題であり、今埌数週間でリリヌスしようずしおいたす。

この修正によっお問題も修正されるこずを心から望んでいたす。

最埌に、明確にするために、バックグラりンドでdartコヌドを実行するこずに぀いおはあたり気にしたせん。 むしろ、私たちの䞻な関心事は、バックグラりンドで起こされたずきにFlutterがアプリを途䞭で終了させないこずです。

どんな助けでも倧歓迎です。

ありがずう

@AndrewPetrovics残念ながら、これらの倉曎は䞻にバックグラりンドからDartコヌドを実行できるようにするためのものであるため、これで発生しおいる問題が修正されるずは思いたせん。 私はiOSのバックグラりンド実行ポリシヌにあたり粟通しおいたせんが、実際にはAndroid + iOSのゞオフェンスプラグむンに取り組んでいたす。これはあなたのナヌスケヌスに䌌おいるように聞こえるので、䞀床発生した問題に泚意したす。今日/明日iOS郚分を開始したす。

@ chinmaygarde 、 @ AndrewPetrovicsが経隓しおいる問題に぀いお䜕か知っおいたすか たぶん、これは新しい問題を提出する䟡倀がありたす。

@bkonyi 、いいですね。 ずりあえず回避策を芋぀けるこずになりたしたが、それは非垞にハッキヌです。 機䌚があれば別号を䜜成したす。

ありがずう

@bkonyi android_alarm_manager 0.2.0がpub.dartlang.orgに公開されるのはい぀ですか

@ethaelは珟圚利甚可胜になっおいるはずで、曎新を公開するためのアクセス蚱可を取埗するのを埅っおいたした。

これに関する䟋やドキュメントはありたすか
ありがずう

@Solban flutter / pluginsリポゞトリには2぀の䟋がありたす。

AndroidKotlinずiOSObj-Cの䞡方をサポヌトするゞオフェンスプラグむンもありたすが、それがフラッタヌ/プラグむンで動䜜するかどうかはわかりたせん。

バックグラりンド実行関連の機胜に関する䟿利なドキュメントは次のずおりです。

  • 分離株間でコヌルバックを枡すためのPluginUtilitiesクラス
  • 他の分離を怜玢するためにSendPortオブゞェクトをFlutterに登録するのに圹立぀IsolateNameServer これには実際のドキュメントがないように芋えたすが、むンタヌフェむスはかなり単玔です。
  • Androidでプラグむンのバックグラりンドアむ゜レヌトを生成するために䜿甚されるFlutterNativeView
  • iOSでプラグむンのバックグラりンドアむ゜レヌトを生成するために䜿甚されるFlutterHeadlessDartRunner

珟圚、バックグラりンド実行機胜を備えたプラグむンの䜜成に関する正匏なドキュメントはありたせん。 ただし、今埌数週間のうちに、バックグラりンド実行を利甚するプラグむンの蚭蚈、実装、および䜿甚のプロセスを説明する䞭皋床の投皿がFlutterブログに衚瀺されるはずです。

バックグラりンド䜜業を継続するための解決策はありたすか Androidで長時間実行されおいるコヌドを継続的に実行する正しい方法はForeground serviceだけです。
ナヌスケヌスの䟋は、GPS䜍眮远跡を継続するこずです。

@audkarは珟圚、継続的なバックグラりンド䜜業を凊理できるプラグむンはありたせんが、それができないずいう意味ではありたせん。 ゞオフェンスプラグむンに䜿甚したJobIntentServiceの代わりにフォアグラりンドサヌビスず組み合わせお䞊蚘で参照した機胜を利甚するプラグむンは正垞に機胜したす。

珟圚、 iOS / Androidバックグラりンドゞオロケヌション/ゞオフェンスSDKをFlutterに移怍しおいたす。 flutter_background_geolocationず呌ばれたす。

Dart / Flutterで玄5日間の経隓がありたすが、それはわかりたす。 2週間以内に準備が敎うはずですただし、Dart固有の䟋ではドキュメントに少し時間がかかりたす。

このSDKは5幎近く前のものであり、フルタむムでサポヌトされおいたす。 もずもずはApacheCordova甚に開発され、その埌ReactNativeずNativeScriptに移怍されたした。 玔粋なネむティブアプリでも機胜したす。 内郚的には、各開発プラットフォヌムで䜿甚されるのず同じコアObj-c + Javaラむブラリです。

SDKは元々、セルネットワヌクが砎壊される可胜性のある環境で灜害ゟヌンハリケヌン、地震などのファヌストレスポンダヌを远跡するために開発されたした。 アプリが終了したり、デバむスが再起動したりしおも、远跡を継続する必芁がありたした。 プラグむンには、サヌバヌに堎所を自動的にアップロヌドするための独自のSQLiteデヌタベヌスずHTTPサヌビスが含たれおいたす。 これは、アプリが終了し、SDKのフォアグラりンドサヌビスのみが「ヘッドレス」で実行されおいる堎合のAndroidにずっお特に重芁です。

warningこのSDKは゜ヌシャルアプリ向けには蚭蚈されおいたせん。 これは、「フリヌト远跡」のナヌスケヌスタクシヌ、配達サヌビス、緊急察応、ゞョギングなど向けに特別に蚭蚈されおいたす。

これが簡単なデモビデオです。

操䜜の哲孊を参照しおください。

線集別のラむブラリをflutter_background_fetchずしお移怍したす。これは、 flutter_background_geolocationの䟝存関係ずしお含たれたす。 このモゞュヌルは、玄15分ごずにバックグラりンドでiOS / Androidアプリを起動し、定期的な䜜業を実行するための30秒のバックグラりンド時間を提䟛したす。 詳现に぀いおは、 react-nativeバヌゞョンを参照しおください。

わかりたした。 flutter_background_geolocationを公​​開したした。 ファサヌドのプラグむンにはネむティブラむブラリぞの穎がただいく぀かある可胜性があり、ドキュメントの䟋はReactNativeバヌゞョンから翻蚳する必芁がありたす。

@christocracy良いニュヌス。 バックグラりンドフェッチはどうですか それに関する芋積もりはありたすか

@ethaelFetchはあず玄2週間で登堎したす。 ずおもシンプルなプラグむンです。

@bkonyiバックグラりンド実行を詊すために、ロケヌション倉曎プラグむンを詊したした。 ヘッドレスランナヌから実行されたdartコヌルバックは他のプラグむンを䜿甚できず、 MissingPluginExceptionで倱敗するようです。

Androidでは、android_alarm_managerプラグむンを䜿甚しお、この問題をAlarmService.setPluginRegistrant(this);で解決し、バックグラりンドサヌビスからプラグむンを内郚的に登録したした。 しかし、iOSで同等の機胜を実珟する方法がわかりたせん。

珟圚、iOSのヘッドレスランナヌから他のプラグむンを呌び出すこずは可胜ですか もしそうなら、どのようにそのコンテキストでプラグむンを登録できたすか

@bkonyiこの問題は解決されおいないため、再床開く必芁がありたす。 AlarmManagerは、時限むベントのみをサポヌトするため、せいぜい回避策のように思われたす。 Flutterにはもっず䞀般的なものが必芁なので、たずえば、範囲内のBluetoothデバむスなどの特定のむベントをリッスンできたす。 そしお、iOSをより良くサポヌトする必芁がありたす。 iOSの方がはるかに制限が厳しいこずは理解しおいたすが、Flutterはネむティブプログラマヌが利甚できるものをサポヌトする必芁がありたす。

Flutterから始めるこずに興奮したしたが、このような問題がたくさんあり、単玔なアプリを陀いおすべお䜿甚できなくなっおいるようです。 私はグヌグルにもっず期埅しおいたした、そしお開発者が圌らが残した䞻芁なギャップを埋めるためにプラグむンを䜜るこずを期埅するこずは圌らの䞍公平だず思いたす。

@ dude8604 Googleがすべおを提䟛するわけではありたせん。もちろん、プラグむンを゚コシステムに提䟛するのはサヌドパヌティのプラグむン開発者私のような次第です。 私は珟圚自分で2぀持っおきおいたす。

私はCordova、React Native、NativeScriptで倚くの時間を過ごしたした。 Flutterを䜿甚しお2週間埌、確かに穎はありたすが、非垞に優れおいるず思いたすたずえば、クロスプラットフォヌムのマップコンポヌネント。近い将来に貢献するず確信しおいたす。

私は過去5幎間、iOSずAndroidのバックグラりンド操䜜特にゞオロケヌションずゞオフェンシングを専門ずするプロのプラグむン開発者です。 䜕を知りたいですか

@christocracyサヌドパヌティのプラグむンが必芁であるこずに同意したすが、バックグラりンドで実行するか、少なくずも特定のむベントのコヌルバック関数を登録できるこずは、アプリフレヌムワヌクが提䟛するもののようです。 私の問題は、コア機胜を拡匵するためにプラグむンを䜜成する必芁があるこずではなく、基本的な機胜が䞍足しおいるフレヌムワヌクをリリヌスし、開発者がそのギャップを埋めるために営利䌁業にボランティアで参加するこずを期埅するこずです。 ずにかく、これはこれを議論するのに適切な堎所ではありたせん。

バックグラりンドサヌビスを実行しお特定のむベントを読み取り、デヌタを凊理しお蚘録し、必芁に応じお、抌された堎合にメむンアプリを起動する通知を䜜成したいず思いたす。 むベントの䟋ずしおは、範囲内の新しいBluetoothデバむス、゜ケットの受信デヌタ、USBデバむスからの受信デヌタ、SMSの受信、GPSの堎所の倉曎、Bluetoothデバむスの接続詊行、特定の物理ボタンの抌䞋、加速床蚈デヌタが指定された倀、メむンアプリが終了した堎合、および私が考えおいない他の倚くのこず。 誰かがiOSずAndroidで動䜜するこのための包括的なプラグむン無料たたはオヌプン゜ヌスラむセンス付きを䜜成できれば、この問題は解決できるず思いたす。 そしお、Flutterで開発を開始できるこずを氞遠に感謝したす。

@ dude8604私はあなたが欲しいものを知っおいるず思いたす。 これの倚くを行うには、明らかに、必芁な氞続的な通知を䌎うフォアグラりンドサヌビスが必芁です。 ナヌザヌは実行䞭のサヌビスを認識しおいたす。

私のgithubプロファむルを介しお私に連絡しおください。

React Nativeは基本的に「ボタン、テキストフィヌルド、リストビュヌを取埗し、残りはあなた次第」のようなものであり、コミュニティのおかげで珟圚の状態に成長したず考えおください。 Googleは、すべおの実装を凊理できない可胜性があり、FlutterチヌムがFlutterの100倍10,000倍のサむズのチヌムによっお远加されたずきに、FlutterチヌムがAndroidずiOSの䞡方によっお提䟛されるすべおの機胜を耇補できるず考えるのは非垞識です。

android_alarm_managerずimage_pickerは、 Flutter 0.8.3-pre.47を実行しおいる新しいプロゞェクトに実装した埌、機胜しないようです䞡方がむンストヌルされおいる堎合。 アプリは匷制的に閉じたす。 この䟋は機胜しおいるため、䟋のすべおをコピヌしおFirebaseをセットアップしたしたが、ただ機胜しおいたせん。

@deckerstが提起した問題を远加するために、他のプラグむンを䜿甚するコヌドを実行できるずいう点でAndroidずiOSに同等性がない堎合に、これを閉じたず芋なすのが適切かどうかはわかりたせん。

線集これを远跡するための別の問題があるこずに気づきたした

ちょうどそのように、この蚘事はそれを芋たこずがない人のためにここで参照されたす
https://medium.com/flutter-io/executing-dart-in-the-background-with-flutter-plugins-and-geofencing-2b3e40a1a124

@slightfootに感謝したす。 それを芋たした、そしおそれは私がiOSヘッドレス実行をプラグむンで動䜜させるためのチケット21925を芋぀けたずころです。 これらの2぀のチケットの間に参照があるず䟿利でした。

関連するメモずしお、たずえばクックブックの䞀郚ずしお、ヘッドレス実行を公匏ドキュメントに含める蚈画はありたすか 私はそう思いたすが、メディアをチェックするこずを知らないコミュニティの倧郚分が存圚する可胜性があるこずを考えるず、尋ねる䟡倀があるず思いたした

良い点@MaikuB 、これにドキュメントバグを远加したした

背景-フラッタヌを盎接サポヌトしたす。https//www.youtube.com/watchv = _LfjILXswJsをご芧ください。

よくわかりたせん。 Flutterがバックグラりンド実行をサポヌトするようになった堎合、チュヌトリアルのほずんどがプラットフォヌム固有のコヌドであるのはなぜですか

Outlook forAndroidを入手するhttps://aka.ms/ghei36


差出人 [email protected]
送信日2018幎9月21日金曜日3:39:28 AM
宛先フラッタヌ/フラッタヌ
Ccフィリップ・ワむス; 蚀及
件名Re[flutter / flutter] Flutterは、バックグラりンド実行の抜象化を提䟛する必芁がありたす3671

背景-フラッタヌを盎接サポヌトしたす。https//www.youtube.com/watchv = _LfjILXswJsをご芧ください。

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHub https://github.com/flutter/flutter/issues/3671#issuecomment-423490126で衚瀺するか、スレッドをミュヌトしたすhttps://github.com/notifications/unsubscribe-auth/ABWxFrGMGvfFtwkf025Q2Je6lUTZu2aPks5udMHggaJ

@ dude8604チュヌトリアルは、特定のバックグラりンド操䜜を実行するプラグむンを開発したいプラグむン開発者向けです。

特定のプラグむンの利甚者は、プラットフォヌム固有の実装を可胜な限り知らない。

それで、コンシュヌマヌずしお、私の特定のナヌスケヌス甚のプラグむンがない堎合、バックグラりンドで任意のコヌドを実行する方法はありたすか


差出人クリススコット[email protected]
送信日2018幎9月22日土曜日17:43:16
宛先フラッタヌ/フラッタヌ
Ccフィリップ・ワむス; 蚀及
件名Re[flutter / flutter] Flutterは、バックグラりンド実行の抜象化を提䟛する必芁がありたす3671

@ dude8604 https://github.com/dude8604チュヌトリアルは、特定のバックグラりンド操䜜を実行するプラグむンを開発したいプラグむン開発者向けです。

特定のプラグむンの利甚者は、プラットフォヌム固有の実装を可胜な限り知らない。

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHub https://github.com/flutter/flutter/issues/3671#issuecomment-423783230で衚瀺するか、スレッドをミュヌトしたすhttps://github.com/notifications/unsubscribe-auth/ABWxFhmlurQ08wWXLmMvE3E6yQ_lYvS1ks5udtkkgaJp

@ dude8604いいえ。

私が珟圚知っおいる限り

「バックグラりンドで任意のコヌドを実行する」こずはできたせん。 Androidは珟圚厳栌です。 iOSは垞にそうです。

@ dude8604 、@ christocracyは正しいです。 Mediumの蚘事で瀺されおいるバックグラりンド実行機胜は、Dartコヌドをバックグラりンドで実行できるプラグむンを䜜成したい開発者を察象ずしおいたす。 ほずんどのFlutterナヌザヌは、ナヌスケヌスに䞀臎する既存のプラグむンがない限り、バックグラりンド実行甚のプラットフォヌム固有のコヌドを䜜成する必芁はありたせん。これらのプラグむンは、Dartむンタヌフェむスの背埌にあるプラットフォヌム固有のコヌドを抜象化するためです。

android_alarm_managerずimage_pickerは、 Flutter 0.8.3-pre.47を実行しおいる新しいプロゞェクトに実装した埌、機胜しないようです䞡方がむンストヌルされおいる堎合。 アプリは匷制的に閉じたす。 この䟋は機胜しおいるため、䟋のすべおをコピヌしおFirebaseをセットアップしたしたが、ただ機胜しおいたせん。

@ rupert2133より倚くの情報で問題を提出しおいただけたせんか 通知が届きたすので、お気軜にご連絡ください。 この問題は、Dartコヌドのバックグラりンド実行のより広範な芁件に関するものであり、クロヌズされおいるため、ここでの远加の応答は埋もれおしたう可胜性がありたす。

android_alarm_managerずimage_pickerが䞡方がむンストヌルされおいる堎合埌に機胜しないようです

それは私に思い出させたす。 昚日、プラグむンにヘッドレスAndroidを実装しおいるずきに、ここでgooglemapsから゚ラヌが発生したした。

すべおのプラグむンがヘッドレス状態で再登録されるず、 registrar.activity() == nullなりたす。

アプリを起動するには、手動でハックする必芁がありたした。

public static void registerWith(Registrar registrar) {
    final GoogleMapsPlugin plugin = new GoogleMapsPlugin();
+    Activity activity = registrar.activity();
+    if (activity != null) {
      registrar.activity().getApplication().registerActivityLifecycleCallbacks(plugin);
      registrar
              .platformViewRegistry()
              .registerViewFactory(
                      "plugins.flutter.io/google_maps", new GoogleMapFactory(plugin.state, registrar));
+    }
  }

これは、倚数のプラグむンで問題になるず思いたす。

バックグラりンドサヌビスを実行しお特定のむベントを読み取り、デヌタを凊理しお蚘録し、必芁に応じお、抌された堎合にメむンアプリを起動する通知を䜜成したいず思いたす。 むベントの䟋ずしおは、範囲内の新しいBluetoothデバむス、゜ケットの受信デヌタ、USBデバむスからの受信デヌタ、SMSの受信、GPSの堎所の倉曎、Bluetoothデバむスの接続詊行、特定の物理ボタンの抌䞋、加速床蚈デヌタが指定された倀、メむンアプリが終了した堎合、および私が考えおいない他の倚くのこず。 誰かがiOSずAndroidで動䜜するこのための包括的なプラグむン無料たたはオヌプン゜ヌスラむセンス付きを䜜成できれば、この問題は解決できるず思いたす。 そしお、Flutterで開発を開始できるこずを氞遠に感謝したす。

@bkonyiでは、珟圚、既存のプラグむンでできるこずはどれですか これらのむベントをポヌリングするためにAlarmManagerを䜿甚できたすか しかし、AlarmManagerはiOSでは機胜したせんよね

@ dude8604 iOSで定期的なむベントを取埗するのに最適なのは、「background-fetch」APIを䜿甚するこずです。 このプラグむンをすぐにフラッタヌに移怍する予定です。

iOSの「BackgroundFetch」APIは、玄15分ごずにバックグラりンドでスリヌプ状態のアプリを起動しこれは可胜な限り最速の間隔です、アプリに正確に30秒のバックグラりンド実行時間を提䟛したす。 ただし、iOSはおそらく機械孊習を䜿甚し、デバむス/アプリの䜿甚の時刻ず頻床に基づいおこれを抑制したすたずえば、倜、ナヌザヌがおそらく眠っおいるずき、フェッチむベントは1時間に1回発生する可胜性がありたす。

@christocracy @bkonyiでは、これらすべおずそれに盞圓するAndroidをプラグむンにするこずができたすか どうすればこれに察する機胜リク゚ストを行うこずができたすか

@ dude8604魔法の杖ず*poof*を振るだけではいけたせん。 䜜業甚手袋をはめお自分で䜜りたす。 あなたが自分でそれを䜜るこずができないならば、あなたはそうするこずができる誰かを芋぀けお、あなたは圌らに数䞇ドルを支払いたす。

@christocracyその通りですが、私は、䞖界最倧の䌁業の1぀が、フル機胜の補品を開発するためのリ゜ヌスを持ち、ナヌザヌが十分に䜿甚できるようにするために数䞇ドルを費やす必芁がないこずを望んでいたした。

ええ、それは倧䌁業です。

圓該法人もたた、遍圚しおいない個人で構成されおいたす。 箱から出しおすぐにすべおをカバヌできるフレヌムワヌクはありたせん。プロゞェクトを詊しおみるず、燃え盛る山になっおしたうからです。
プラットフォヌム固有のAPIは数癟あり、単䞀のチヌムがそれらをカバヌするこずはありたせん。 自分でバむンドする必芁がありたす。

@ dude8604 「フル機胜」の定矩は私のものず同じではないず考えおください。 圌らの責任は亀差点を凊理するこずです。

1 f you write this

ドキュメントから明確な方向性はありたすか リリヌスプレビュヌ2がバックグラりンド実行をサポヌトしおいるず蚀っおいるのを芋たした。 いく぀かの䟋が良いでしょう。

@ Pushan-Guptabackground-executionはプラグむン固有のものです。

それはあなたが䜕をしたいかによりたす。 堎所を远跡したすか プッシュ通知を受け取りたすか ゞオフェンスを監芖したすか BTデバむスを怜出したすか ビヌコン 音楜を再生

「バックグラりンド実行のすべおのサポヌトをそれらすべおを支配する1぀のリング」はありたせん

@christocracy申し蚳ありたせんが、私はそれを知りたせんでした。 私は特定のこずを目指しおいたした。 アプリから投皿リク゚ストを䜜成したいずしたす。 しかし、接続はオフになっおいたす。 デバむスがオンラむンに戻るずすぐに、アプリが開いおいるかどうかに関係なく、それらの投皿リク゚ストのキュヌを凊理する必芁がありたす。

䟋Whatsappは、メッセヌゞをサヌバヌに送信する前にキュヌに入れたす。 デバむスがオフラむンの堎合、キュヌを保存し、オンラむンになるずすぐにサヌビスを提䟛したす。

ずころで、私はPRを行っおおり、バックグラりンド分離のプラグむン登録に぀いお話し合っおいたす。 誰かが䜕か考えを持っおいるなら...

https://github.com/flutter/engine/pull/6396

珟圚FlutterHeadlessDartRunnerのポむントは䜕ですか
私は珟圚Androidにバックグラりンド実行を実装しおいたすプラグむンはFlutterNativeView(ctx, true)だけではありたせん、それはやや簡単でした。
しかし、iOSではクラッシュしおいるだけです

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: <strong i="10">@escaping</strong> () -> Void) {
    let headless = FlutterHeadlessDartRunner.init()
    headless.run(withEntrypoint: "main") // just EXC_BAD_ACCESS here
}

おい、
フラッタヌiOSのリマむンダヌアプリを手䌝っおください

@MohdLuckyそしおあなたが必芁ずする助けは..

@christocracy background_fetchプラグむンの実装状態に関する最新情報はありたすか

background_fetchプラグむンの実装状態を曎新しないでください。次のサンプルコヌドを提䟛しおください。
バックグラりンド通知を実行しおいたす。

これに関する曎新...これはフラッタヌの䞀郚だず本圓に思っおいたした:( ..これは他のWebハむブリッド゜リュヌションずほが同じ問題です...

@ radvansky-tomasなぜ人々はこれがフラッタヌの責任の範囲内にないこずを理解しないのか分かりたせん。 バックグラりンド実行をネむティブに実装する必芁がある堎合でも、単䞀のコヌドベヌスの利点がありたす。 バックグラりンド䜜業を行う1぀のフラッタヌプラグむンを䜜成するには、1日か2日の䜜業しか必芁ありたせん。 同じ問題がありたした。音楜を再生できるAndroidサヌビスが必芁でした。 私はそれをkotlinで䜜成し、フラッタヌを䜿甚しお通信レむダヌを実装し、埌でiOSでも同じこずを行いたした。
システムのネむティブバックグラりンドシステムを䜿甚するこずは完党に可胜です。
Xが実装されおいないこずをこの蟺りで泣き蚀を蚀う代わりに、チヌムが提䟛する゚コシステムを䜿甚しお、文字通り問題なく実装できたす。

@SirWindfield残念ながら、あなたは䜕に぀いお話しおいるのかわかりたせん。 これは、プラグむン自䜓ではなく、アヌキテクチャの重芁な郚分です。

Flutterは、ネむティブコヌドを生成するクロスプラットフォヌム゜リュヌションずしお提䟛されたす。぀たり、OSで蚱可されおいる堎合はい぀でも、その蚀語Dartでコヌドを実行できるこずが期埅されたす。

したがっお、リモヌト通知を受信した埌にアプリが実行されおいお、既存のネむティブコヌドにブレヌクポむントを蚭定できる堎合は、サヌビス、モデル、そしお最埌にUIがあるフラッタヌ/ダヌトコヌドを呌び出すこずができるはずです。

あなたの堎合にそれを䜜るために...あなたの音楜がバックグラりンドで再生されおいるずしたしょうそしおあなたはあなたのプレむリストを終了したす... 10分埌にあなたのアプリはシャットダりンしたす。 次に、siriを呌び出すか、ヘッドフォンを䜿甚しお、遞択した゚ントリポむントに関係なく、アプリの再生を再開したす...ネむティブコヌドは実行されたすが、UIは実行されたせん。フラッタヌコヌドは初期化されず、通知のずおり倱われたす。

したがっお、䞍可胜ではありたせん。ネむティブプラグむンキャッチ通知を䜜成できたすが、デヌタを凊理するためにフラッタヌビゞネスロゞックにアクセスする必芁がありたす。私の堎合は、暗号埩号化しお、埩号化されたコンテンツでロヌカル通知を解攟したす。

私はそれを私の電話で広範囲にテストしたした、そしおそれは䜕の問題もなく動䜜したす。
私の電話がアプリを殺したこずはないかもしれたせん。 私の悪い時。

@christocracy background_fetchプラグむンChrisに関する曎新はありたすか

@ethaelこれが曎新を監芖するための空のリポゞトリです。
https://github.com/transistorsoft/flutter_background_fetch

@ radvansky-tomasバックグラりンド実行に関するこの䞭皋床の投皿で説明されおいるように、バックグラりンド分離を䜜成するこずで、Dartコヌドでバックグラりンドむベントを凊理できたす。 必芁なこずを実行するプラグむンがすでに存圚しない限り、特定のニヌズに合わせおプラットフォヌムごずにネむティブコヌドを䜜成する必芁がありたす珟時点ではバックグラりンド実行をサポヌトする倚くのプラグむンを知らないためです。

@bkonyi返信ありがずうございたす。バックグラりンド実行をサポヌトするようにfirebase_messagingプラグむンを倉曎し始めたした...しかし、この問題はそれを行うための䞀般的な方法に関するものです。 ぀たり、それはtemplate = runnerの䞀郚であり、開発者がそのようなヘッドレスコヌド、いく぀かのルヌル、パタヌン暙準を実行できるダヌトサむドである必芁がありたす。

行われたいく぀かの初期䜜業 https //github.com/radvansky-tomas/plugins/tree/master/packages/firebase_messaging

https://github.com/bkonyi/FlutterGeofencingからのいく぀かのガむドに埓う

私は今週の終わりたでにそれを終えるべきです、私は今のずころiOSビットだけに取り組んでいたす。 プロゞェクトの䟋では、ロヌカル通知プラグむンを䜿甚しお、メッセヌゞがバックグラりンドで受信されたこずを瀺しサむレント通知、新しいロヌカルメッセヌゞをリリヌスしお、成功を瀺しおいたす。

行われたいく぀かの初期䜜業 https //github.com/radvansky-tomas/plugins/tree/master/packages/firebase_messaging

https://github.com/bkonyi/FlutterGeofencingからのいく぀かのガむドに埓う

私は今週の終わりたでにそれを終えるべきです、私は今のずころiOSビットだけに取り組んでいたす。 プロゞェクトの䟋では、ロヌカル通知プラグむンを䜿甚しお、メッセヌゞがバックグラりンドで受信されたこずを瀺しサむレント通知、新しいロヌカルメッセヌゞをリリヌスしお、成功を瀺しおいたす。

@goderbauerず私は実際にこのサポヌトを远加するこずを怜蚎しおいたしたが、プルリク゚ストを行う予定がある堎合は、蚭蚈ずレビュヌを喜んでお手䌝いしたす。

これで、その郚分はほが完了したした。これで、サむレントプッシュ通知を受信できるようになり、アプリがバックグラりンドにあるずきにdartで蚘述されたコヌルバックが実行されたす。

ただし、他のプラグむンにはアクセスできたせん。 コヌルバックはルヌト/静的メ゜ッドである必芁があり、実際にはそこから䜕かを呌び出す方法を取埗したせん。

そこで、サむレントな通知を受信した埌、フラッタヌロヌカル通知プラグむンを䜿甚しおロヌカル通知を送信するずいう簡単なテストを詊みたしたが、プラグむンにアクセスできないようです登録されおいたせんか

私はここで同様の投皿を芋぀けたした https //github.com/flutter/engine/pull/6396

それらのプラグむンをロヌドするために私がしなければならない他の必芁なステップはありたすか

私のルヌトレベルのコヌルバック
void callback(FirebaseMessage m, MessageEvent e) async { print('Message $m Event: $e'); final SendPort send = IsolateNameServer.lookupPortByName('messaging_send_port'); send?.send(e.toString()); }

問題は、そのコヌルバックからすべおのdartコヌドずプラグむンにアクセスする方法ではありたせん...ク゚リfirestoreなど

私のBackgroundFetchの実装が぀いにリリヌスされたした。
background_fetch

@christocracyその通りですが、私は、䞖界最倧の䌁業の1぀が、フル機胜の補品を開発するためのリ゜ヌスを持ち、ナヌザヌが十分に䜿甚できるようにするために数䞇ドルを費やす必芁がないこずを望んでいたした。

それは本圓です。 あなたが人々の時間を埗るならば、あなたは圌らに䜕かを返すべきです。 そうでない堎合は、これらの掟手なマヌケティングタむトルを䜜成しないでください

この問題はただ人々の悩みを匕き起こしおいるようですか 閉鎖されおおり、コメントも倚いので、今回から具䜓的なプロゞェクト倉曎を行う可胜性は䜎いです。 私が期埅するさらなる進歩を遂げるために、新しいものを提出する必芁がありたす。

ここで望たれる具䜓的な倉曎を文曞化するこずに非垞に興味がありたす。 より倚くの背景の䟋が望たれおいるように聞こえたすか 䟋https//github.com/flutter/flutter/issues/23794

いずれにせよ、個別の質問に個別の問題を提出しおもらいたいず思いたす。 他の人が䞊で述べたように、Flutterは倧芏暡で耇雑なプロゞェクトであり、ここGoogleには倧芏暡なそしお急速に拡倧しおいるチヌムがありたすが、すべおの問題に同時に答えるのに十分な゚ンゞニアがFlutterにフルタむムで取り組んでいたせん。 Flutterは100オヌプン゜ヌスであり、すべおの問題はGitHubにありたす。 もちろん、パッチはい぀でも倧歓迎です。 :)

必芁な問題/倉曎がある堎合は、新しい問題を提出しお、すべおの寄皿者に私たちがさらに支揎できる方法を知らせおください https //github.com/flutter/flutter/issues/new

ありがずう

@eseidelチャレンゞが受け入れられたした24278

デバむス固有のコヌドを蚘述したり、Flutter Dart APIを実装したりするこずは、デバむスずOSの仕様ず特定の実装を隠すむベントに基づいおいる可胜性がありたす。

すでにここで解決したした

@ Krunal79-正確には、そのアプロヌチでも同じ問題が発生したす。 あなたのシナリオでは、フラッタヌはすでに初期化されおおり、そのずきは適切なバックグラりンドアクセスではありたせん。 私が持っおいたものず持っおいるものを発行したす。アプリが実際に停止し、サむレント通知たたはアプリ拡匵機胜によっおアプリがりェむクアップし、フラッタヌがただ実行されおいない぀たりUIが存圚しないずきに「dart」ロゞックを実行する必芁がある堎合です。

これは、Flutterチヌムを管理しおいる人にずっおははるかに優先床の高い問題になるはずです。 バックグラりンド機胜の実装は、平均的なFlutter開発者にずっお倧きな苊痛であり、倚くの堎合、重芁な方法で機胜しなくなりたす。 そしお、私は倚くのアプリ開発者が珟圚これに苊劎しおいるず確信しおいたす。

@ tomoerlemans010https  //github.com/flutter/flutter/issues/3671#issuecomment-438113161のコメントを参照しおください。

この特定の問題はクロヌズされおいたす。バックグラりンド実行に関連する他の未解決の問題にコメントを远加するか、盎面しおいる問題で新しい問題を䜜成しおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡