共享扩展未出现在能够共享照片的应用程序名单上的iPhone
我试图创建一个共享的应用程序扩展,并遵循从这个来源教程:共享扩展未出现在能够共享照片的应用程序名单上的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
描述的你必须改变共享扩展形式项目的目标部署目标,然后它开始工作。
谢谢,这会在共享选项中提出我的共享应用程序扩展选项。 但是在该扩展上点击不会打开我的应用程序。 –
删除旧的应用程序并再次运行,然后显示共享扩展弹出。 –
我通过TE去chnetexperts教程,一个可能的问题貌似@"group.iosApp.testSharing"
传递到NSUserDefaults
不匹配.plist
谢谢,但plist不必拥有这个应用程序组名称。 问题其实是别的。这个答案帮助了我:http://stackoverflow.com/a/42273617/5237727。 默认情况下,共享扩展的部署目标是iOS 10.0 –
你能分享一些相关的代码吗? – ystack