朋友圈里的网易云歌曲连接,点击进网页,点网页“打开”,唤醒网易云App进入对应的歌曲播放。

图片描述

clipboard.png
clipboard.png

我了解过一点,需要JS跟OC相互调用。请问能大概说下原理吗?
另外我需要提供一个schemes吗?

clipboard.png

比如 duobao:// 能打开我的APP,但是需要打开指定的页面呢?

比如打开APP进入购物车页面

ShoppingCartViewController.m

能够通过url来实现吗比如
duobao://ShoppingCartViewController
duobao://HandsOfIndiana/ShoppingCartViewController

这样是不成功的

阅读 4.5k
2 个回答

通过schemes是可以啊, UIApplicationDelegate中不是有方法获取URL么.

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

url.scheme拿到scheme, 内容在URL上.

A 应用上代码:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"duobao://duobao?param"]];

B 应用填写scheme, 并在Appdelegate实现监听方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    if ([url.scheme isEqualToString:@"duobao"]) {
        NSLog(@"url %@",url);
        
//        [self showAlertWithURL:url];
    }
    return YES;
}

效果图

clipboard.png

明白了,就在Appdelegate代理中的

//iOS 9 推荐用这个  iOS 10 也能用
-(BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options

其实我只要提供一个duobao:// 给web端,这样就能打开我的APP,//后面带的参数可以跟web端说好具体怎么传。在这个代理方法中url保存着我要的参数,我可以截取参数,进行处理。

iOS 9 之前用这个
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id) annotation
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题