2

新しいファイル システム イベントが発生したときに通知を受信できるようにする必要があります。たとえば、新しい写真が追加されたとき。アプリが入っているサンドボックスだけでなく、ファイルシステム全体でこれらの通知を受信できるようにする必要があります。これはジェイルブレイクのあるデバイス用ですか?

どのプライベート API を使用すればよいか知っている人はいますか?

私のアプリはデーモン アプリであり、バックグラウンドで実行され、これらのイベントを受信できる必要があります。

4

1 に答える 1

1

iOS では、実際にこれが非常に簡単になります。

デーモンに他に何をさせたいのかはわかりませんが、新しい画像ファイルを監視するためにデーモンを継続的に存続させたいだけなら、別の選択肢があります。

新しいファイル システム イベントが検出された場合にのみ起動デーモンを起動するように設定できます。 (OS X) Launch Daemons に関する Apple ドキュメントを参照してください。

起動デーモンの実行可能ファイルは単純なmain()プログラムにすることができます。新しい画像ファイルが書き込まれると、システムによって開始されます。その後、NSFileManagerまたはを使用ALAssetLibraryして、最新のファイルのディレクトリを確認できます。デーモンが最後にいつ実行されたかを示す設定を保存して、すべての新しいファイルを確実に追跡することができます。

int main(int argc, char *argv[]) {
    // if we're here, we know there's a new picture, so use
    // NSFileManager to check for photos
    // or, see something like http://stackoverflow.com/q/9730973/119114 ... 

    // and then we exit the process and let launchd start us
    // again when there's more pictures

    return 0;
}

ここで重要なのは、次の/System/Library/LaunchDaemons/com.example.MyApp.plistようなファイルを使用することです。

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>com.example.MyApp</string> 
    <key>ProgramArguments</key> 
    <array> 
        <string>/Applications/MyApp.app/MyDaemonExecutable</string> 
        <string>optional_argument_one</string>   <!-- passed to main() as argv[] -->
        <string>optional_argument_two</string>   <!-- passed to main() as argv[] -->
    </array> 
    <key>WatchPaths</key> 
    <array> 
        <string>/private/var/mobile/Media/DCIM/100APPLE</string>                
        <string>/private/var/mobile/Media/DCIM/101APPLE</string> 
    </array> 
</dict> 
</plist> 
于 2013-04-01T01:47:29.347 に答える