iOS-自定义Intent及ShortCut,能通过快捷指令唤醒APP并跳转到指定页面

1.Xcode->New->File->搜索Intent

2.在新建的intent文件中中New intent

3.完善资料,内容可自定义

4.创建Extension,file -> new -> target , 选择 Intents Extension 即可

创建完成后,在intents文件中勾选以下target,否则在扩展里,无法访问到前面创建的Intent类

编译程序,Xcode 会自动生成对应的类,我这里的话会生成 LaunchAppIntent 类,下面需要使用

5.完善IntentHandler

引入上述生成的文件,并写入代理,如果之前未勾选target是无法引入的

在代理中写入,以及点击确认按钮后执行的事件

- (void)handleLaunchApp:(LaunchAppIntent *)intent completion:(void (^)(LaunchAppIntentResponse * _Nonnull))completion {
    completion([[LaunchAppIntentResponse alloc] initWithCode:LaunchAppIntentResponseCodeContinueInApp userActivity:nil]);
}

- (void)confirmLaunchApp:(LaunchAppIntent *)intent completion:(void (^)(LaunchAppIntentResponse * _Nonnull))completion {
    NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:NSStringFromClass([LaunchAppIntent class])];
    LaunchAppIntentResponse *response = [[LaunchAppIntentResponse alloc] initWithCode:LaunchAppIntentResponseCodeSuccess userActivity:userActivity];
    completion(response);
}

6.在手机快捷指令中可以进行测试,新增快捷指令,搜索Xcode中设置好的,点击完成

点击创建好的指令,即能实现唤起APP,也可通过Siri唤醒,名字按照上述自行定义

7.实现APP自动跳转到制动页面

在AppDelegate中引入你要跳转的界面和intent,唤醒APP会通过一下方法进行执行,设置好快捷指令后将会自动跳转到你设置好的控制器

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    if([userActivity.interaction.intent isKindOfClass:[LaunchAppIntent class]]){
        ViewController *vc = [ViewController new];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
        self.window.rootViewController = nav;
        ViewController2 *secondVC = [[ViewController2 alloc] init];
        [vc.navigationController pushViewController:secondVC animated:YES];
        return YES;
    }
    return NO;
}

8.如果想进行多种操作,可以在此处设置Parameters,在Parameters内新增变量

demo在这里

要实现H5跳转APP指定页面,需要在APP中配置对应的Scheme URL,并在H5中通过该URL来触发跳转。以下是一个示例代码: ``` // H5页面中的代码 function jumpToApp() { var schemeUrl = "myapp://page?id=123"; // 这里的URL需要根据实际情况进行修改 window.location.href = schemeUrl; } // APP中的代码 // iOS // 在Info.plist文件中添加以下代码 <key>LSApplicationQueriesSchemes</key> <array> <string>myapp</string> // 这里的myapp需要和H5中的schemeUrl保持一致 </array> // 在AppDelegate.m中添加以下代码 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { NSString *scheme = [url scheme]; if ([scheme isEqualToString:@"myapp"]) { NSString *host = [url host]; NSString *path = [url path]; // 根据host和path来判断跳转到哪个页面 ... return YES; } return NO; } // Android // 在AndroidManifest.xml中添加以下代码 <activity android:name=".MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="myapp"/> // 这里的myapp需要和H5中的schemeUrl保持一致 </intent-filter> </activity> // 在MainActivity中添加以下代码 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); String scheme = intent.getScheme(); if ("myapp".equals(scheme)) { String host = intent.getData().getHost(); String path = intent.getData().getPath(); // 根据host和path来判断跳转到哪个页面 ... } } ``` 以上是一个基本的实现方式,具体的实现需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值