問題タブ [backgrounding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - バックグラウンドで新しい写真が撮影されたことを検出する
私はこの問題についてかなり長い間苦労してきました。iPhone (>= iOS7) で実行されるアプリがあり、ユーザーが撮影したすべての写真を (もちろん、カメラへのアクセスを要求した後に) 選択し、特定の基準を満たしている場合はアップロードする必要があります。明らかに、ユーザーはアプリ内からではなくカメラアプリから写真を撮っているため、写真が撮られるとアプリがバックグラウンドになり、ユーザーが写真を撮った後にアプリを再度開くとは限りません。私のアプリでは GPS/VoIP/Accessory を使用していないため、アプリの plist でこれらのアクセス許可を有効にしていません (これらを使用しているため、フェッチと通知のみを有効にしています)。ユーザーが新しい写真を撮ったことを知るために、(1) オブザーバーを使用する方法と (2) ALAssetLibrary から最後の写真を取得する方法の 2 つの異なる方法を試しました。最後の画像作成日をメモリに保持し、それを取得した最新の画像と比較します。アプリがフォアグラウンドで実行されている場合、これらは両方ともうまく機能します (つまり、アプリを起動して実行すると、これらの方法のいずれかで写真を正しく取得できます) が、いずれかの方法を機能させる方法が見つかりませんでしたバックグラウンド。最初のケースでは、オブザーバーは、アプリがフォアグラウンドにあるとき、または長時間実行されているタスク (3 分の制限がある) を実行している場合は最初の 3 分間のみ通知を受け取ります。2 番目のケースでも、問題は似ています (長時間実行されるバックグラウンド タスクでスキャンを実行し、2 分間スキャンした後にスリープ状態にしてから、同じことを行う別のバックグラウンド タスクを起動します)。複数のバックグラウンド タスクを 1 つずつ生成したとしても、3 分間の時間制限がタスク全体に適用されているようです... 特別な権限 (VoIP/GPS/アクセサリなど) なしで、正確にこれを行う App Store の他のアプリを少なくとも 1 つ見たので、これを達成する方法があると確信しています。これを達成するための正しい方法を教えてくれるヒントはありますか? 前もって感謝します!
c# - Xamarin.Forms によるバックグラウンド処理
私は現在 Xamarin.Forms アプリを計画していますが、そうしている間に、答えがないように思われる点に遭遇しました。
アプリは、データを取得し、特定のタスクを実行するようにサービスに指示するために、WCF サービスと連携する必要があります。アプリケーションがアクティブな間、そうするのは簡単です。しかし、アプリがしなければならないことがあります。x 分ごとにサービスを呼び出してデータを更新し、場合によってはユーザーへの通知を作成します。iOS のバックグラウンド処理または Android のサービスについて読んだことがありますが、Xamarin.Forms アプリケーションがバックグラウンド処理を行う一般的な方法を持つ方法はないようです。では、アプリが Xamarin.Forms で非アクティブなときに、WCF サービスにアクセスしてデータを処理するにはどうすればよいでしょうか?
ios - AVCaptureSession でオーディオをキャプチャするときにバックグラウンド ミュージックがキャンセルされた
iOS アプリ内でもバックグラウンド ミュージックを再生し続けたいです。ただし、アプリに入るとバックグラウンドミュージックがキャンセルされます。問題を AVCaptureSession のオーディオ部分に切り分けました。
2 つの方法で AudioSession を直後に設定しようとしました。
またはこのように:
しかし、どちらも機能しませんでした。
android - タグ付きの新しいアンドロイドウェイクロックを作成すると、毎回同じウェイクロックが返されますか?
タイトルは謎めいたものになる可能性があります。私の質問は簡単です。ウェイクロックを作成します。
次に、同じタグを使用して別の場所でこれを再度実行します。取得参照で同じウェイクロックを取得しますか?
c# - リモート サーバーをチェックするプッシュ サービスまたはバックグラウンド サービスの作成
私が必要とするものの一般的な考え:
Android アプリを iOS に移植しています (Xamarin を使用していますが、目的の C から C# に簡単に変換できます)。AlarmManager に大きく依存して、所有していない Web サイトの HTML ページでバックグラウンド チェックを実行します。AlarmManager は基本的に Android 用のタスク スケジューラです。ユーザーは、必要に応じて頻度を設定します。
私が試したこと:
バックグラウンド フェッチ:
Perform Fetch は、決して呼び出されることはありません。ある程度の一貫性が必要です (1 分のずれは大したことではありません... しかし、数時間では不十分です)。私はそれを実行させましたが、まっすぐに機能することはありませんでした。私は PerformFetch がどのように機能するかについて多くのことを読みましたが、ユーザーが必要とする重要な応答時間が得られるとは思いません。
UserNotifications: iOS 10 の新機能として、通知を繰り返す機能があります。ただし、これは同じ通知を繰り返します。
プッシュ アラート:
自分のサーバー
チェックを行うサーバーをセットアップし、メッセージを Firebase Cloud Messaging に送信して、新しいアイテムに関するメッセージをユーザーに送信することができます。Android バージョンには約 500 人のアクティブ ユーザーがいます。5 分ごとに 5 つの異なるページを 90 kbs でチェックすると、1 時間あたり約 0.5 ギガの帯域幅になります。
したがって、短所は次のとおりです。
- 過剰な帯域幅の使用により、自宅のインターネットが大幅に遅くなります
- 自分で確保する必要がある
- 停電が何日も続く場合があり、エンド ユーザーはループから外れます
- 彼らのサーバーはいつでも私のマシンから起動することができ、それが起こった場合、ISPから新しいIPアドレスを取得できました...彼らがそれを許可していると仮定します
共有ホスティングを使用して、15 分ごとに cronjob をセットアップします
15 分ごとにアラートを出すように cronjob を設定できます。これは最速ではありませんが、最初のオプションに依存するよりもはるかに優れています (まっすぐに呼び出されることはないため)。
- 繰り返しますが、私は彼らのサーバーが私を追い出さないことに翻弄されています. これを行うと、アプリは完全に壊れます。
- 共有ホスティングは、サーバーに過度の負担をかけるため、私を遮断するかもしれません (Hostgator は無制限の帯域幅を主張していますが、彼らが私にそうしてほしいかどうかはわかりません)