iOS 為app添加自己支持的文件類型

在微信或者QQ中收到ppt,doc等文件時(shí),可以選擇使用其他應(yīng)用打開,如何讓自己的app出現(xiàn)在列表中呢?

一、存在的UTL類型

UTL可以到蘋果的文檔來查詢 - 傳送門

二、 添加一個(gè)已存在的類型

以打開圖片為例:
按照下面的配置來配置在Document types中添加一個(gè)item


屬性說明:
DocumentTypeName:文檔的類型名稱

HandlerRank:指定文件能被app持有或者只能打開文件,默認(rèn)為Default,其中包含 Owner,Default,Alternate,None四個(gè)可選值,指定對(duì)于某種類型的優(yōu)先權(quán)級(jí)別,而Launcher Service會(huì)根據(jù)這個(gè)優(yōu)先級(jí)別來排列顯示的App的順序。優(yōu)先級(jí)別從高到低依次是Owner,Alternate,Default。None表示不接受這種類型。

Document Content Type UTIs:文件類型的UTI.

CFBundleTypeIconFiles 在別的app上顯示圖片

三、自定義UTL


屬性說明:

DocumentTypeName:文檔的類型名稱,這里我將分享的文件壓縮打包成*.stl格式

HandlerRank:這里指是否擁有子文檔,這里我設(shè)置為default

Document Content Type UTIs:這里填寫你App的bundle identifier + 分享的文件的后綴
CFBuandleTypeIconFiles: 填寫顯示在列表 中的圖片



public.filename-extension:這里填寫你壓縮包的擴(kuò)展名。

四、在自己App中獲取文件

如下代碼:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"url = %@",url);
    if (url != nil) {
        NSString *path = [url absoluteString];
        path = [self URLDecodedString:path];
        NSMutableString *string = [[NSMutableString alloc] initWithString:path];
        if ([path hasPrefix:@"file://"]) {
            [string replaceOccurrencesOfString:@"file://" withString:@"" options:NSCaseInsensitiveSearch  range:NSMakeRange(0, path.length)];
        }

        //獲取在存儲(chǔ)在本地的文件路徑就可以在自己需要顯示的頁面加載文件顯示了
    }

    return YES;
}
//當(dāng)文件名為中文是,解決url編碼問題
-(NSString *)URLDecodedString:(NSString *)str
{
    NSString *decodedString=(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
    NSLog(@"decodedString = %@",decodedString);
    return decodedString;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容