我使用 iOS 8 共享扩展将 iPhone 应用程序提交到 AppStore。它被 AppStore 拒绝,原因是“共享”扩展是全屏且不受限制。
我正在通过扩展 UIViewController 和使用 Xib 创建用于扩展的自定义 UI。当我在 iPad 上安装应用程序并通过 safari 打开扩展程序时,我的应用程序仅适用于 iPhone,它以全屏显示并且不限于 iPhone 屏幕。
原因
25.1:应用托管扩展必须符合应用扩展编程指南 ----- 25.1 -----
我们发现您的应用程序托管了扩展程序,但不符合应用程序商店审查指南要求的应用程序扩展程序编程指南。
具体来说,我们发现您的“分享”扩展是全屏且不受限制的。
最佳答案
我需要用于共享扩展的自定义 UI,并通过扩展 UIViewController 来实现。我在没有实现 preferredContentSize 和 modalPresentationStyle 的情况下将应用程序提交到 AppStore,它被 AppStore 拒绝,因为扩展 View 在 iPad 中全屏显示。
在苹果文档中提到:Apple Doc当你有额外的内容要显示时,你可以依靠自动布局约束来适本地调整 View 的高度。如果你不使用自动布局,你可以使用 UIViewController 属性 preferredContentSize 来指定 View 的新高度。
我正在使用 XiB,因此在共享扩展 plist 中添加 NSExtensionPrincipalClass 设置为 InitialViewController。
在 InitialViewController 中
- (void)viewDidLoad {
[super viewDidLoad];
ShareViewController *vcShare = [[ShareViewController alloc] initWithNibName:@"ShareViewController" bundle:nil];
vcShare.extensionContext = self.extensionContext;
UINavigationController *ncController = [[UINavigationController alloc] initWithRootViewController:vcShare];
[self.navigationController pushViewController:vcShare animated:NO];
ncController.preferredContentSize = CGSizeMake(300.0, 420.0);
ncController.modalPresentationStyle = UIModalPresentationFormSheet;
ncController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:ncController animated:NO completion:nil];
}
它在 iPhone 中显示全屏,但在 iPad 中它不会全屏显示。我进行了上述更改,然后应用程序在 AppStore 中被接受。
关于ios - 应用托管扩展必须符合应用扩展编程指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26278455/