共享扩展名未出现在能够在iPhone上共享照片的应用程序列表中 [英] Share Extension not appearing in the list of apps on capable of Sharing Photo on iPhone

查看:110
本文介绍了共享扩展名未出现在能够在iPhone上共享照片的应用程序列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个共享应用扩展程序,并按照此源中的教程进行操作:

I am trying to create a share app extension and followed the tutorial from this source:

http://www.technetexperts.com/mobile/share-extension-in-ios-application-overview-with-example/

我正在使用XCode 8.0(8A218a)在模拟器上,它可以按预期工作.在装有iOS 9.3.3的iPhone 5s上.

I am using XCode 8.0 (8A218a) On simulator it works as expected. On my iPhone 5s with iOS 9.3.3.

我先安装容器应用程序,然后在XCode询问选择要运行的应用程序"时选择照片"应用程序来运行扩展程序.

I install the container application first and then run Extension by choosing Photos app when XCode asks "Choose an app to run".

现在,当扩展程序运行时打开照片时,出现以下错误:

Now when I open a photo while extension is running, the following error appears:

MobileSlideShow[3500:589624] *** error reading settings archive file: <ISRootSettings:
/var/mobile/Documents/com.apple.mobileslideshow.settings/ISRootSettings_10.plist> 

现在,当我点击共享"按钮时,我的容器应用程序不会出现在能够共享图片的应用程序列表中.

Now when I tap the Share button, my container app doesn't appear in the list of Apps capable of Sharing picture.

我正在共享一些代码:

I am sharing some code:

ShareViewController.m

@implementation ShareViewController
- (BOOL)isContentValid {
    // Do validation of contentText and/or NSExtensionContext attachments here
    return YES;
}

- (void)didSelectPost {

    for (NSItemProvider* itemProvider in ((NSExtensionItem*)self.extensionContext.inputItems[0]).attachments ) {

        if([itemProvider hasItemConformingToTypeIdentifier:@"public.jpeg"]) {
            NSLog(@"itemprovider = %@", itemProvider);

            [itemProvider loadItemForTypeIdentifier:@"public.jpeg" options:nil completionHandler: ^(id<NSSecureCoding> item, NSError *error) {

                NSData *imgData;
                if([(NSObject*)item isKindOfClass:[NSURL class]]) {
                    imgData = [NSData dataWithContentsOfURL:(NSURL*)item];
                }
                if([(NSObject*)item isKindOfClass:[UIImage class]]) {
                    imgData = UIImagePNGRepresentation((UIImage*)item);
                }

                NSDictionary *dict = @{
                                       @"imgData" : imgData,
                                       @"name" : self.contentText
                                       };
                NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.iosApp.testSharing"];
                [defaults setObject:dict forKey:@"img"];
                [defaults synchronize];
            }];
        }
    }
}

@end

ViewController.m

@implementation ViewController

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];
    NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.iosApp.testSharing"];
    NSDictionary *dict = [defaults valueForKey:@"img"];

    if (dict) {

         NSData *imgData = [dict valueForKey:@"imgData"];
         UIImage *image = [UIImage imageWithData:imgData];
         [_shareImageView setImage:image];
         _shareImageNameLabel.text = [dict valueForKey:@"name"];
         [defaults removeObjectForKey:@"img"];
     }

 }

@end

推荐答案

您必须更改项目的共享扩展表单目标的部署目标,然后它才能开始工作.

You have to change the deployment target of share extension form target of your project then it starts working.

这篇关于共享扩展名未出现在能够在iPhone上共享照片的应用程序列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆