2017-02-16 11 views
0

私は共有アプリの拡張機能を作成しようとしています上の共有写真の能力上のアプリケーションのリストに表示されると、このソースからのチュートリアルに従っていません)シミュレータ上では、期待どおりに動作します。 iOS 9.3.3を搭載した私のiPhone 5sで。共有拡張がiPhone

コンテナアプリケーションを最初にインストールしてから、Xcodeが「実行するアプリケーションを選択する」と尋ねたときに写真アプリを選択して拡張機能を実行します。拡張子が実行されている間、私は写真を開いたときに

は今、次のエラーが表示されます

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

私は共有]ボタンをタップすると今、私のコンテナアプリが共有できるアプリのリストには表示されません。画像。

EDIT: 私はいくつかのコードを共有しています:

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 
+1

関連するコードを共有できますか? – ystack

答えて

5

で説明したものと一致しません。

+0

ありがとうございます。これにより、共有オプションの共有アプリ拡張オプションが表示されます。 しかし、その拡張機能をタップしても私のアプリケーションは開かれません。 –

+0

古いアプリケーションを削除してもう一度実行すると、共有ポップアップが表示されます。 –

0

私はTEを経てチュートリアルでは、可能性の問題がNSUserDefaultsに渡さ@"group.iosApp.testSharing"のように見えるchnetexpertsは、あなたはそれが動作を開始し、プロジェクトのシェア拡張フォームターゲットのデプロイメント・ターゲットを変更する必要が.plist

+0

ありがとう、plistはこのアプリケーショングループ名を持つ必要はありません。 問題は実際には別のものでした。この回答は私に役立った:http://stackoverflow.com/a/42273617/5237727。 デフォルトでは、共有拡張の展開ターゲットはiOS 10.0でした。 –

関連する問題