zoukankan      html  css  js  c++  java
  • 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"]];

  • 相关阅读:
    四则运算3.2
    第二周进度条
    构建之法阅读笔记02
    四则运算2
    第一周进度条
    构建之法阅读笔记01
    四则运算 Python
    第一周第二周学习进度条
    《构建之法》学习中疑问
    小学四则运算1.0
  • 原文地址:https://www.cnblogs.com/Peterahan/p/2816661.html
Copyright © 2011-2022 走看看