FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


iOSで出力したファイルをAirDropでMacに送信する

iOSアプリで作成、保存したファイルをMac側で使うのにずっとiTunes経由で取得してた。Application supports iTunes file sharingをYESにしとく方法ね。でもこれやっぱり面倒。そこでAirDrop使えばいいんじゃね?と思ってやってみた。

UIActivityViewController Tutorial: Sharing Data

↑Info.plistの設定はこのあたりを参考に。ただ面倒なのでアイコンとかは使ってない(俺のはリリース目的じゃないし)。
public.mime-typeもセットしてない。
拡張子はなんでもいい。.hogeでも.fooでも。

送信するためのiOS側のUIActivityViewControllerあたりのコードがこんな感じ。

{
    //(1)
    NSURL *url = [NSURL fileURLWithPath:fileName];

    //(2)
    NSError *error = nil;
    NSData *data = [saveString dataUsingEncoding:NSUTF8StringEncoding];
    BOOL succeed = [data writeToURL:url options:NSDataWritingAtomic error:&error];

    //(3)
    if (succeed) {
        UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:@[]];
         [self presentViewController:activityViewController animated:YES completion:nil];
    }
}
(1)ここでfileNameはNSStringオブジェクト、ファイルの保存先で拡張子まで含む。
(2)saveStringもNSStringオブジェクトで中身はたんにxmlファイル。これをNSDataオブジェクトに変えて保存する。
(3)ここで指定するactivityItemsはNSURLオブジェクト。当初urlではなくdataもしくはurl,dataを記述しててうまくいかなかった。Info.plistのUTIの設定でConforms to UTIsにpublic.dataってしてるからNSDataオブジェクトを送信する必要があるのかと思ってた。

ともかく、これでめでたく送信することができた。MacのFinderでダウンロードフォルダーに入ってる。長かったなあ、、、


おまけ

UIActivityViewController表示

↑UIActivityViewController でCancelなり処理後にDoneしたらどうこうしたい時の記述はこんな感じで。
{
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:@[]];
        [activityViewController setCompletionWithItemsHandler:
         ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
        // 処理
    }];
}



*versions
macOS Sierra 10.12.6
iOS 11.1.1
Xcode 9.1

<< macOSでテーブル処理をViewController以外に記述したい  TopPage  macOSでSCNView→png画像を作成、保存する >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1101-7daab56d




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad