如果您的操作扩展无法打开,请确保已将其正确配置并与主应用程序和扩展点关联。您还应检查环境和权限设置,以确保操作扩展可以在应用程序中正确运行。以下是一个可能的示例代码,其中包含操作扩展配置和启动代码:
// 在操作扩展的 info.plist 文件中配置扩展点和相关应用程序
NSExtension
NSExtensionAttributes
NSExtensionActivationRule
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
(
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
)
).@count >= 1
).@count >= 1
NSExtensionMainStoryboard
MainInterface
NSExtensionPointIdentifier
com.apple.ui-services
// 在应用程序中启动操作扩展
- (void)performActionWithItem:(SLComposeSheetConfigurationItem *)item
{
NSExtensionContext *context = [item.userInfo objectForKey:SLComposeSheetConfigurationItemExtensionContext];
NSArray *attachments = context.inputItems.firstObject.attachments;
for (NSItemProvider *attachment in attachments) {
if ([attachment hasItemConformingToTypeIdentifier:@"public.url"]) {
[attachment loadItemForTypeIdentifier:@"public.url"
options:nil
completionHandler:^(id item, NSError *error) {
if (error == nil && [item isKindOfClass:[NSURL class]]) {
NSURL *url = (NSURL *)item;
// 处理 URL
}
}];
}
else if ([attachment hasItemConformingToTypeIdentifier:@"public.image"]) {
[attachment loadItemForTypeIdentifier