1

Airdrop を使用して、アプリで使用される sqlite データベース (単一ファイルの .sqlite) をある iPad から別の iPad に送受信することは可能ですか? その場合、受信デバイス上のファイルにアクセスするにはどうすればよいですか?

そうでない場合、アプリ内から別のデバイスの同じアプリにファイルを送信するための最良のオプションは何ですか? ファイルは常に sqlite データベースになります。

4

2 に答える 2

5

誰かがこれに出くわした場合、答えは「はい」です。あなたならできます。私が取った方法を紹介します。

最初に、別の Core Data スタックを使用して、エクスポートする sqlite ファイルを作成し (私の場合はフィルタリングなどを使用して)、次に、送信側デバイスで sqlite の名前を変更して、アプリに固有の拡張子を付けました。次に、次のコードを使用して転送を開始します。

NSURL *url = [coreDataExporter urlToShare];
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObject:url] applicationActivities:nil];

// Exclude all activities except AirDrop.
NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
                                UIActivityTypePostToWeibo,
                                UIActivityTypeMessage, UIActivityTypeMail,
                                UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
                                UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
controller.excludedActivityTypes = excludedActivities;

// Present the controller
[self presentViewController:controller animated:YES completion:nil];

このリンクを使用して独自の拡張子を設定し、アプリに属する​​ファイルとして認識されるようにします。

https://developer.apple.com/library/ios/qa/qa1587/_index.html

そのリンクをほとんどそのまま使用しますが、独自の説明、識別子、および拡張子に置き換えます。インターネットで探しているものよりもはるかに簡単です。5分かかります。

送信側デバイスで転送が完了すると、ファイルは読み取り/削除専用ファイルとして Documents/Inbox ディレクトリに保存されます。App Delegate は、次のメソッドを実装できます。

  • (void)applicationDidBecomeActive:(UIApplication *)アプリケーション

受信デバイスの必要な場所にファイルをコピーします。ファイルが受信デバイスで受信されると、アプリを起動して処理する必要があることがわかり、DidBecomeActive が起動して、必要に応じて処理できるようになります。

また、次を使用できます。

  • (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 注釈:(id)annotation

アプリ デリゲートで通知を投稿して、アプリが既にアクティブな場合 (したがって DidBecomeActive が起動しない場合)、アプリが通知をリッスンして適切なアクションを実行できるようにします。

これを理解するのはかなり長い道のりでした。うまくいけば、この要約をここに投稿することで、誰かが道を進むのを助けることができます.

于 2014-09-18T06:58:01.987 に答える