あるアプリケーションから別のアプリケーションにファイルを送信する必要があります。UIDocumentInteractionControllerを使用してファイルをコピーします。SendingApp で実装する
コードを次に示します。UIDocumentInterationController
ViewController
NSString *path = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"zip"];
NSURL *urlPath = [NSURL fileURLWithPath:path];
self.docController = [UIDocumentInteractionController interactionControllerWithURL:urlPath];
[docController retain];
docController.delegate = self;
[docController presentOpenInMenuFromRect:self.view.frame
inView:self.view
animated:YES];
docController はプロパティです。ViewController
実装しUIDocumentInteractionControllerDelegate
ます。
ReceiverApp は、この拡張機能のファイルを処理するように設定されています。
私のReceiverAppInfo.plist
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>zip</string>
</array>
<key>CFBundleTypeName</key>
<string>ZIP</string>
<key>LSItemContentTypes</key>
<array>
<string>public.zip-archive</string>
<string>com.pkware.zip-archive</string>
</array>
<key>LSHandlerRank</key>
<string>Alternate</string>
</dict>
</array>
ReceiverAppDelegate で使用します
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
受信ファイルのオープンを処理します。
問題は、このコードが iOS 5.1 では完璧に機能することですが、iOS 6 では機能しません。 UIDocumentInteractionController OpenIn メニューが表示され、ReceiverApp が表示されますが、アプリを選択しても何もしません。コンソールを調べたところ、iPhone Simulator 6.1 がファイルを 1 つのディレクトリにコピーしようとしているのに対し、Simulator 5.1 は別のディレクトリにコピーしようとしていることがわかりました。
iPhoneシミュレーター 6.1
com.apple.mdt[2342]:
Copy ~/Library/Application Support/iPhone Simulator/6.1/Applications/367D395F-DC8B-4F4C-83C7-B22992E34C64/sendingZIP.app/1.zip ->
/var/mobile/Library/Application Support/Containers/-23.ReceiveApp/Documents/Inbox
iPhoneシミュレーター5.1
com.apple.mdt[2439]:
Copy ~/Library/Application Support/iPhone Simulator/5.1/Applications/0DE1852A-F803-4583-87BC-8F1EBBE362A4/sendingZIP.app/1.zip ->
~/Library/Application Support/iPhone Simulator/5.1/Applications/927E310A-2766-4709-81CB-0E759F24236D/Documents/Inbox
誰もそのような問題を抱えていますか?何をすべきか知っている人はいますか?