iOS 8 个应用程序扩展从 safari 获取图像
iOS 8 app extension get image from safari
我在我的应用上使用应用扩展共享,
将 url 和 "message" 还给我用于分享,效果很好,
但是我的图像在登录时显示为 nil
@interface ShareViewController ()
@property (nonatomic, strong)__block NSString *urlString;
@property (nonatomic, strong)__block UIImage *photo;
@property (nonatomic, strong)NSString *msg;
@end
@implementation ShareViewController
- (BOOL)isContentValid {
// Do validation of contentText and/or NSExtensionContext attachments here
return YES;
}
- (void)viewDidLoad{
[super viewDidLoad];
//Get msg
NSExtensionContext *myExtensionContext = [self extensionContext];
NSArray *inputItems = [myExtensionContext inputItems];
for(NSExtensionItem* item in inputItems){
self.msg = [NSString stringWithFormat:@"%@", [item.attributedContentText string]];
}
// get url
NSExtensionItem *item = self.extensionContext.inputItems.firstObject;
NSItemProvider *itemProvider = item.attachments.firstObject;
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) {
self.urlString = [NSString stringWithFormat:@"%@",url.absoluteString];
}];
}
//img
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(UIImage *image, NSError *error) {
self.photo = image;
}];
}
}
- (void)didSelectPost {
// This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments.
NSLog(@"big fat fella");
NSLog(@"msg: %@", self.msg);
NSLog(@"url %@:", self.urlString);
NSLog(@"im %@:", self.photo);
// Inform the host that we're done, so it un-blocks its UI. Note: Alternatively you could call super's -didSelectPost, which will similarly complete the extension context.
[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}
所以请注意我在 didSelectPost 上收到 url 和消息,但图像显示为空,
如何获取图像?
谢谢!
要在 Safari 上共享时在共享扩展上自动生成图像,请使用 loadPreviewImageWithOptions:completionHandler:previewImageHandler。
[itemProvider loadPreviewImageWithOptions:nil completionHandler:^(UIImage *image, NSError *error){
if(image){
//do anything here with the image
}
}
我可以在 Safari 上共享时检索缩略图 auto-generated,但我无法使用以下方法更改图像的大小:
NSString * const NSItemProviderPreferredImageSizeKey;
参考:https://developer.apple.com/documentation/foundation/nsitemprovider
我在我的应用上使用应用扩展共享,
将 url 和 "message" 还给我用于分享,效果很好, 但是我的图像在登录时显示为 nil
@interface ShareViewController ()
@property (nonatomic, strong)__block NSString *urlString;
@property (nonatomic, strong)__block UIImage *photo;
@property (nonatomic, strong)NSString *msg;
@end
@implementation ShareViewController
- (BOOL)isContentValid {
// Do validation of contentText and/or NSExtensionContext attachments here
return YES;
}
- (void)viewDidLoad{
[super viewDidLoad];
//Get msg
NSExtensionContext *myExtensionContext = [self extensionContext];
NSArray *inputItems = [myExtensionContext inputItems];
for(NSExtensionItem* item in inputItems){
self.msg = [NSString stringWithFormat:@"%@", [item.attributedContentText string]];
}
// get url
NSExtensionItem *item = self.extensionContext.inputItems.firstObject;
NSItemProvider *itemProvider = item.attachments.firstObject;
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) {
self.urlString = [NSString stringWithFormat:@"%@",url.absoluteString];
}];
}
//img
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(UIImage *image, NSError *error) {
self.photo = image;
}];
}
}
- (void)didSelectPost {
// This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments.
NSLog(@"big fat fella");
NSLog(@"msg: %@", self.msg);
NSLog(@"url %@:", self.urlString);
NSLog(@"im %@:", self.photo);
// Inform the host that we're done, so it un-blocks its UI. Note: Alternatively you could call super's -didSelectPost, which will similarly complete the extension context.
[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}
所以请注意我在 didSelectPost 上收到 url 和消息,但图像显示为空,
如何获取图像? 谢谢!
要在 Safari 上共享时在共享扩展上自动生成图像,请使用 loadPreviewImageWithOptions:completionHandler:previewImageHandler。
[itemProvider loadPreviewImageWithOptions:nil completionHandler:^(UIImage *image, NSError *error){
if(image){
//do anything here with the image
}
}
我可以在 Safari 上共享时检索缩略图 auto-generated,但我无法使用以下方法更改图像的大小:
NSString * const NSItemProviderPreferredImageSizeKey;
参考:https://developer.apple.com/documentation/foundation/nsitemprovider