1

私はこの問題についてかなり長い間苦労してきました。iPhone (>= iOS7) で実行されるアプリがあり、ユーザーが撮影したすべての写真を (もちろん、カメラへのアクセスを要求した後に) 選択し、特定の基準を満たしている場合はアップロードする必要があります。明らかに、ユーザーはアプリ内からではなくカメラアプリから写真を撮っているため、写真が撮られるとアプリがバックグラウンドになり、ユーザーが写真を撮った後にアプリを再度開くとは限りません。私のアプリでは GPS/VoIP/Accessory を使用していないため、アプリの plist でこれらのアクセス許可を有効にしていません (これらを使用しているため、フェッチと通知のみを有効にしています)。ユーザーが新しい写真を撮ったことを知るために、(1) オブザーバーを使用する方法と (2) ALAssetLibrary から最後の写真を取得する方法の 2 つの異なる方法を試しました。最後の画像作成日をメモリに保持し、それを取得した最新の画像と比較します。アプリがフォアグラウンドで実行されている場合、これらは両方ともうまく機能します (つまり、アプリを起動して実行すると、これらの方法のいずれかで写真を正しく取得できます) が、いずれかの方法を機能させる方法が見つかりませんでしたバックグラウンド。最初のケースでは、オブザーバーは、アプリがフォアグラウンドにあるとき、または長時間実行されているタスク (3 分の制限がある) を実行している場合は最初の 3 分間のみ通知を受け取ります。2 番目のケースでも、問題は似ています (長時間実行されるバックグラウンド タスクでスキャンを実行し、2 分間スキャンした後にスリープ状態にしてから、同じことを行う別のバックグラウンド タスクを起動します)。複数のバックグラウンド タスクを 1 つずつ生成したとしても、3 分間の時間制限がタスク全体に適用されているようです... 特別な権限 (VoIP/GPS/アクセサリなど) なしで、正確にこれを行う App Store の他のアプリを少なくとも 1 つ見たので、これを達成する方法があると確信しています。これを達成するための正しい方法を教えてくれるヒントはありますか? 前もって感謝します!

4

0 に答える 0