美文网首页
应用之间相互跳转

应用之间相互跳转

作者: 3a169b0787bc | 来源:发表于2016-08-06 17:30 被阅读26次

    应用之间的跳转在做第三方登陆,分享的时候一般会用到。当设备安装有指定的应用的时候,就可以从当前应用跳转到指定应用,并且能够传递消息。
    iOS SDK 提供了一个叫做url scheme的机制来实现这个功能。
    首先在被调用的应用中我们需要在项目的info.plist文件里添加一些信息

    1.png
    如图所示配置即可。我们现在假设被调用的应用是B应用,正常运行的是A应用。
    URL Schemes 这是是用来让A应用来找到B应用的标志。
    URL Identifier 这个不太确定是用来做什么的,我最后删去了这条信息 还是可以正常跳转。
    自定义 URL Scheme 完全指南

    这个时候已经配置完毕了。然后就用可以在A应用中来写代码 跳转到B应用了。
    NSURL * url = [NSURL URLWithString:@"mqq://"]; if ([[UIApplication sharedApplication] canOpenURL: url]) { [[UIApplication sharedApplication] openURL: url]; }
    这里mqq是用来调QQ的。 如果只是单纯的调用B应用。 urlString就应该是@"URL Schemes :" 如果要传递一些消息就应该是@"mqq://?name=jack&age=33"。 这样就能顺利调用B应用同时在B应用的AppDelegate里可以重写这样一个方法。
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return YES; }
    url 这个链接中存储了跳转的url scheme以及参数列表,我们通过[url scheme]方法获取前者;用[url query]方法获取?之后的参数列表。
    这里我还发现一个问题。参数列表不能出现汉字,否则无法成功跳转。
    像腾讯或者新浪微博他们的文档中应该有url scheme的传值标准。
    sourceApplication就是A应用的bundleID。

    但是这个时候我并没有成功调用起B应用。因为我漏掉了一件事情。 错误信息是这样的。xxxx - error: "This app is not allowed to query for scheme xxxx"。然后查阅了资料发现了问题的所在。
    直接附上解决方法的博文。canOpenURL: failed for URL

    相关文章

      网友评论

          本文标题:应用之间相互跳转

          本文链接:https://www.haomeiwen.com/subject/rmbksttx.html