ShareExtension数据处理

2019-06-19  本文已影响0人  漆黑夜色

在获取到分享数据的NSItemProvider去解析数据时,使用系统提供了相应的API

// Returns YES if the item provider has at least one item that conforms to the supplied type identifier.

- (BOOL)hasItemConformingToTypeIdentifier:(NSString*)typeIdentifier;

判断UTI时,是从NSItemProvider中的registeredTypeIdentifiers列表中注册的UTI和自己需要的数据类型做对比:

[itemProvider hasItemConformingToTypeIdentifier:@"public.image"];

itemProvider获取到的图片UTI注册信息列表为@"public.image"

@"public.image"与registeredTypeIdentifiers注册UTI相同或者下级则返回YES,不同则返回NO.

但是在项目中发现选取iPhone文件中的PDF等文件时registeredTypeIdentifiers中包含的UTI会有多个

<NSItemProvider: 0x2807e6680> {types = (

    "com.adobe.pdf",

    "public.file-url"

)}

系统提供的API去判断无法确认是URL还是PDF,增加了判断逻辑的复杂性.

因此项目中不去系统API去做判断,而是使用CFStringRef的判断方法.

NSString *registered = itemProvider.registeredTypeIdentifiers.firstObject;

CFStringRef registeredType = (__bridgeCFStringRef)registered;

BOOL isContain = UTTypeConformsTo(registeredType, kUTTypePDF);

registeredTypeIdentifiers中获取最精准的UTI去做判断,这样就能更精准的定位文件类型.

上一篇 下一篇

猜你喜欢

热点阅读