在微信或者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;
}