iOS - 從iCloud厂抖,QQ,微信獲取文件

GitHub地址:FileAccess_iCloud_QQ_Wechat

操作

點擊列表跳轉到QQ克懊,微信忱辅。選擇文件,選擇“用其他方式打開”谭溉,點擊原程序圖標墙懂,跳轉回原程序獲取到文件數(shù)據。點擊跳轉到iCloud Drive夜只,選擇文件垒在,跳轉回原程序獲取到文件數(shù)據蒜魄。

效果圖

效果演示.png
截圖.jpeg
截圖2.jpeg

實現(xiàn)步驟

  • QQ扔亥,微信

設置白名單

image.png

跳轉

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mqq://"] options:@{} completionHandler:nil];
    }
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weixin://"]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weixin://"] options:@{} completionHandler:nil];
    }

設置Document types下的Document Content Type UTIs,指定與程序關聯(lián)的文件類型谈为,詳情參考System-Declared Uniform Type Identifiers

image.png
  • iCloud

使用UIDocumentPickerViewController

- (void)presentDocumentPicker {
    NSArray *documentTypes = @[@"public.content", @"public.text", @"public.source-code ", @"public.image", @"public.audiovisual-content", @"com.adobe.pdf", @"com.apple.keynote.key", @"com.microsoft.word.doc", @"com.microsoft.excel.xls", @"com.microsoft.powerpoint.ppt"];
    
    UIDocumentPickerViewController *documentPickerViewController = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:documentTypes
                                                                                                                          inMode:UIDocumentPickerModeOpen];
    documentPickerViewController.delegate = self;
    [self presentViewController:documentPickerViewController animated:YES completion:nil];
}

在UIDocumentPickerDelegate里拿到url

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url;

判斷iCloud是否可用

+ (BOOL)iCloudEnable {
    
    NSFileManager *manager = [NSFileManager defaultManager];
    
    NSURL *url = [manager URLForUbiquityContainerIdentifier:nil];

    if (url != nil) {
        
        return YES;
    }
    
    NSLog(@"iCloud 不可用");
    return NO;
}

通過UIDocument的子類ZHDocument旅挤,傳入url獲取數(shù)據

+ (void)downloadWithDocumentURL:(NSURL*)url callBack:(downloadBlock)block {
    
    ZHDocument *iCloudDoc = [[ZHDocument alloc]initWithFileURL:url];
    
    [iCloudDoc openWithCompletionHandler:^(BOOL success) {
        if (success) {
            
            [iCloudDoc closeWithCompletionHandler:^(BOOL success) {
                NSLog(@"關閉成功");
            }];
            
            if (block) {
                block(iCloudDoc.data);
            }
            
        }
    }];
}

ZHDocument

#import "ZHDocument.h"

@implementation ZHDocument

- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError * _Nullable __autoreleasing *)outError {
    
    self.data = contents;
    
    return YES;
}

@end

在UIDocumentPickerDelegate依次執(zhí)行,獲取文件名伞鲫,文件數(shù)據粘茄,寫入沙盒Documents

#pragma mark - UIDocumentPickerDelegate

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url {
    
    NSArray *array = [[url absoluteString] componentsSeparatedByString:@"/"];
    NSString *fileName = [array lastObject];
    fileName = [fileName stringByRemovingPercentEncoding];
    
    if ([iCloudManager iCloudEnable]) {
        [iCloudManager downloadWithDocumentURL:url callBack:^(id obj) {
            NSData *data = obj;
            
            //寫入沙盒Documents
             NSString *path = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/%@",fileName]];
            [data writeToFile:path atomically:YES];
        }];
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市秕脓,隨后出現(xiàn)的幾起案子柒瓣,更是在濱河造成了極大的恐慌,老刑警劉巖吠架,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芙贫,死亡現(xiàn)場離奇詭異,居然都是意外死亡傍药,警方通過查閱死者的電腦和手機磺平,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門魂仍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拣挪,你說我怎么就攤上這事擦酌。” “怎么了菠劝?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵赊舶,是天一觀的道長。 經常有香客問我闸英,道長锯岖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任甫何,我火速辦了婚禮出吹,結果婚禮上,老公的妹妹穿的比我還像新娘辙喂。我一直安慰自己捶牢,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布巍耗。 她就那樣靜靜地躺著秋麸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炬太。 梳的紋絲不亂的頭發(fā)上灸蟆,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音亲族,去河邊找鬼炒考。 笑死,一個胖子當著我的面吹牛霎迫,可吹牛的內容都是我干的斋枢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼知给,長吁一口氣:“原來是場噩夢啊……” “哼瓤帚!你這毒婦竟也來了?” 一聲冷哼從身側響起涩赢,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤戈次,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后筒扒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怯邪,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年霎肯,在試婚紗的時候發(fā)現(xiàn)自己被綠了擎颖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榛斯。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖搂捧,靈堂內的尸體忽然破棺而出驮俗,到底是詐尸還是另有隱情,我是刑警寧澤允跑,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布王凑,位于F島的核電站,受9級特大地震影響聋丝,放射性物質發(fā)生泄漏索烹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一弱睦、第九天 我趴在偏房一處隱蔽的房頂上張望百姓。 院中可真熱鬧,春花似錦况木、人聲如沸垒拢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽求类。三九已至,卻和暖如春屹耐,著一層夾襖步出監(jiān)牢的瞬間尸疆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工惶岭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寿弱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓俗他,卻偏偏與公主長得像脖捻,于是被迫代替她去往敵國和親阔逼。 傳聞我的和親對象是個殘疾皇子兆衅,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)嗜浮,斷路器羡亩,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,374評論 7 249
  • The Invitation By Oriah Mountain Dreamer It doesn't inter...
    伍帆閱讀 871評論 0 0
  • 在成為巖石之前 石頭是自由的 在成為玻璃之前 巖石是自由的 在成為杯子之前 玻璃是自由的 在盛滿水之前 杯子是自由...
    Rogaaaaa閱讀 681評論 11 9