2017-02-16 67 views
0

我試圖創建一個共享的應用程序擴展,並遵循從這個來源教程:共享擴展未出現在能夠共享照片的應用程序名單上的iPhone

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

我使用的XCode 8.0(8A218a )在模擬器上它按預期工作。在iOS 9.3.3的我的iPhone 5s上。

我先安裝容器應用程序,然後在XCode詢問「選擇要運行的應用程序」時選擇Photos應用程序來運行Extension。

現在,當我打開一張照片,同時延長運行時,出現以下錯誤:

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

現在,當我點擊分享按鈕,我的容器的應用程序不會出現在應用程序的可共享的列表圖片。

編輯: 我分享一些代碼:

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去chnetexperts教程,一個可能的問題貌似@"group.iosApp.testSharing"傳遞到NSUserDefaults不匹配.plist

+0

謝謝,但plist不必擁有這個應用程序組名稱。 問題其實是別的。這個答案幫助了我:http://stackoverflow.com/a/42273617/5237727。 默認情況下,共享擴展的部署目標是iOS 10.0 –

相關問題