ios开发中,如何在自己的应用调用另外一个应用

最近学习了一下sina微博的sdk,了解并猜测了一下它的sso机制(客户端的),开始比较奇怪demo中是怎么调用起sina客户端的。其实ios的机制来讲,调起一个其他的app比较简单:

这个其他的app,也分为两种,一种是我们开发者开发的,另外一种,是系统的app.

(1)先说一下从一个app中调用我们开发者开发的app

我们自己的app,我简称appA,要调用的app我简称appB

过程如下:appA->appB   appB->appA  并通过URL Scheme回传给appA一个参数。(这个过程,其实类似我们的demo,调起sina微博客户端,微博客户端经过处理之后,又返回到我们的demo过程)

需要做的工作步骤:

    a) appA中,需要app(工程名称)-info.plist这个文件,这个文件一般在Supporting Files文件夹下,实在找不到就搜.plist文件吧,肯定有的。找到之后,在Information Property List下创建一个项, 右键,选择Add Row,找到URL types,创建之。然后再选择item0,继续Add Row,创建一个URL Schemes,在其下级的item里面,设置appA本身的URL Scheme.设置完毕之后,应该如下图所示:

,这个url scheme,说白了,就是appA的一个名字,用来给别的app识别的。假设appA的url scheme:App58ForIphone。

    b)appB,也要做一个URL Schemes,方法参照a),假设appB的url scheme:58pinche

    c)好了,appA和appB都有名字了,那么怎么识别(调起)它们呢,非常简单,

        appA->appB

        NSURL * pincheUrl = [NSURL URLWithString:@"58pinche://?key=value"];

        [[UIApplicationsharedApplication] openURL:pincheUrl];

 

        appB->appA

        NSURL * appBUrl = [NSURL URLWithString:@"App58ForIphone://?key=value"];

        [[UIApplicationsharedApplication] openURL:pincheUrl];

    d)如何传参以及接收参数呢,通过URL Scheme规则(规则您自己定,最简单的,就是类似上面的key value形势)

       接收并处理参数是根据ios框架在appdelegate提供的两个回调函数:

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

       - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

      在里面parse URL Scheme就可以了(制定好的URL Scheme非常重要)

(2) 如何调用系统的app呢,比如说短信,电话以及商店中的应用好评等等

 结论:统统使用OpenURL

至于如何使用:请参见

https://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007891-SW1

所介绍的URL Schemes

下面随便举几个例子:

1).如果想要在程序中直接连接到app store的itunes而不进http的情况(进web页面,直接加http地址)。

NSString *str = [NSStringstringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=404612543"];

[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:str]];

2).调用 自带mail


[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"mailto://admin@hzlzh.com"]];

3).调用 电话phone


[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"tel://8008808888"]];


4).调用 SMS


[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];


5).调用自带 浏览器 safari


[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"http://www.hzlzh.com"]];

6).调用 Remote


[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"remote://fff"]];

原文地址:https://www.cnblogs.com/Peterahan/p/2816661.html