外部URL调起App,再前往指定VC。已经实现调起,问题在前往指定VC。
提供一个案例:weixin://scanqrcode 微信扫一扫,用Safari打开,能成功调起微信并且打开扫一扫,之后不作扫描操作,能够微信左上角的返回按钮,返回微信“发现”。
我的思路是:
1.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
中,
我已经能够拿到url,比如myapp://id=10 ,拿到这id,我就可以push商品详情页VC,加载id=10的商品数据。
问题来了:我push时失败了,VC导航是在 ..didFinishLaunching..
中代码创建的。如果是present是可以成功前往指定wVC的。
代码:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
/** 如果url以 shuyong 开头 */
BOOL isOrNot = [[url absoluteString] hasPrefix:@"shuyong://"];
if (isOrNot) {
/** 跟服务端说好,根据id 前往不同的场景 */
/** shuyong://id=50 只需要后面数字 */
NSString *str = [[url absoluteString] substringFromIndex:13];
NSLog(@"%@",str);
if ([str isEqualToString:@"90"]) {
TargetVC *bvc = [TargetVC new];
//获取当前根视图VC
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
UIViewController *result = window.rootViewController;
//push
[[[UINavigationController alloc]initWithRootViewController:result] pushViewController:bvc animated:YES];
}
}
return NO;
}
请给我一些思路吧~~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果 window.rootViewController 本身就是 UINavigationController 的话,那么很简单:
如果不是的话,那么:
根据 didFinishLaunchingWithOptions 里面的代码, keyWindow.rootViewController 本身就是一个 UINavigationController。是不是可以考虑,直接用 rootViewController 直接 push 就行?。
'Pushing a navigation controller is not supported', UINavigationController 不能接受 push 进来的对象是 UINavigationController,而你这个 'bvc' 应该是个 UINavigationController 的子类吧,把它改成 ViewController 就行了。(不知道你是不是想问这个)