ios开发中,如何在自己的应用调用另外一个应用
最近學(xué)習(xí)了一下sina微博的sdk,了解并猜測了一下它的sso機(jī)制(客戶端的),開始比較奇怪demo中是怎么調(diào)用起sina客戶端的。其實(shí)ios的機(jī)制來講,調(diào)起一個其他的app比較簡單:
這個其他的app,也分為兩種,一種是我們開發(fā)者開發(fā)的,另外一種,是系統(tǒng)的app.
(1)先說一下從一個app中調(diào)用我們開發(fā)者開發(fā)的app
我們自己的app,我簡稱appA,要調(diào)用的app我簡稱appB
過程如下:appA->appB appB->appA 并通過URL Scheme回傳給appA一個參數(shù)。(這個過程,其實(shí)類似我們的demo,調(diào)起sina微博客戶端,微博客戶端經(jīng)過處理之后,又返回到我們的demo過程)
需要做的工作步驟:
a) appA中,需要app(工程名稱)-info.plist這個文件,這個文件一般在Supporting Files文件夾下,實(shí)在找不到就搜.plist文件吧,肯定有的。找到之后,在Information Property List下創(chuàng)建一個項(xiàng), 右鍵,選擇Add Row,找到URL types,創(chuàng)建之。然后再選擇item0,繼續(xù)Add Row,創(chuàng)建一個URL Schemes,在其下級的item里面,設(shè)置appA本身的URL Scheme.設(shè)置完畢之后,應(yīng)該如下圖所示:
,這個url scheme,說白了,就是appA的一個名字,用來給別的app識別的。假設(shè)appA的url scheme:App58ForIphone。
b)appB,也要做一個URL Schemes,方法參照a),假設(shè)appB的url scheme:58pinche
c)好了,appA和appB都有名字了,那么怎么識別(調(diào)起)它們呢,非常簡單,
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)如何傳參以及接收參數(shù)呢,通過URL Scheme規(guī)則(規(guī)則您自己定,最簡單的,就是類似上面的key value形勢)
接收并處理參數(shù)是根據(jù)ios框架在appdelegate提供的兩個回調(diào)函數(shù):
- (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) 如何調(diào)用系統(tǒng)的app呢,比如說短信,電話以及商店中的應(yīng)用好評等等
結(jié)論:統(tǒng)統(tǒng)使用OpenURL
至于如何使用:請參見
https://developer.apple.com/library/ios/
所介紹的URL Schemes
下面隨便舉幾個例子:
1).如果想要在程序中直接連接到app store的itunes而不進(jìn)http的情況(進(jìn)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).調(diào)用 自帶mail?
[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"mailto://admin@hzlzh.com"]];
3).調(diào)用 電話phone?
[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"tel://8008808888"]];?
4).調(diào)用 SMS
?[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];?
5).調(diào)用自帶 瀏覽器 safari
?[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"http://www.hzlzh.com"]];
6).調(diào)用 Remote
?[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"remote://fff"]];
只要心是晴朗的,人生就沒有雨天
總結(jié)
以上是生活随笔為你收集整理的ios开发中,如何在自己的应用调用另外一个应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下的Pycharm教程
- 下一篇: BCZM : 1.13