我在此分享步骤和源代码。
第 1 步:- 应用程序扩展必须有一个包含应用程序 - 您不能只创建一个从商店下载的应用程序扩展程序,首先创建一个常规应用程序来包含应用程序扩展程序。为了这个演示,只需创建一个新的单视图项目并保持不变。转到File -> New -> Project并选择 iOS 下的 Single view application -> Applications 将其称为“ ExtendableApp ”。
第 2 步:- 如果您想创建自定义体验,只需将 ExtensionViewController 设置为从 UIViewController 继承,一旦您的扩展被激活,所有常规 viewDidLoad、viewDidAppear 等都将被调用。
第 3 步:- 在您的控制器情节提要中为按钮创建插座,我在此描述 3 个按钮。
第 4 步:- 在 ExtensionViewController.m 中写入
- (void)viewDidLoad {
[super viewDidLoad];
self.preferredContentSize = CGSizeMake(self.view.frame.size.width, 60.0f);
// Do any additional setup after loading the view from its nib.
}
第 5 步:- 我假设您已经在扩展情节提要中设置了按钮的插座和 IB 操作
- (IBAction) mActionButtonTapped :(UIButton *) sender {
switch (sender.tag) {
case 0: {
NSURL *url = [NSURL URLWithString:@"IDENTIFIER_1://"];
[self.extensionContext openURL:url completionHandler:nil];
}
break;
case 1: {
NSURL *url = [NSURL URLWithString:@"IDENTIFIER_2://"];
[self.extensionContext openURL:url completionHandler:nil];
}
break;
case 2: {
NSURL *url = [NSURL URLWithString:@"IDENTIFIER_3://"];
[self.extensionContext openURL:url completionHandler:nil];
}
break;
default:
break;
}
}
第 6 步:- 在您的项目中,在 appDelete.m 中编写这些代码
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
[self appExtensionCallBack:url.absoluteString];
return YES;
}
- (void) appExtensionCallBack :(NSString *)urlString {
if ([urlString isEqualToString:@"IDENTIFIER_1://"]) {
[self.tabBarController setSelectedIndex:0];
} else if ([urlString isEqualToString:@"IDENTIFIER_2://"]) {
[self.tabBarController setSelectedIndex:1];
} else if ([urlString isEqualToString:@"IDENTIFIER_3://"]) {
[self.tabBarController setSelectedIndex:2];
}
}
注意:-我在我的项目中使用标签栏控制器,你可以给自己尊重的控制器。
- (void) moveToControllerScene {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:STORY_BOARD_IDENTIFIER bundle:nil];
YOUR_CONTROLLER_OBJECT *obj = [storyboard instantiateViewControllerWithIdentifier:@"YOUR_CONTROLLER_OBJECT"];
[navController pushViewController:obj animated:YES];
}
第 7 步:- 要在真实设备中测试扩展,您必须制作单独的 App ID 和配置文件。在扩展和你的项目中删除适当的配置文件。