1. 程式人生 > >iOS開發基礎之第三方調起自己的App

iOS開發基礎之第三方調起自己的App

URL Scheme的作用

我們都知道蘋果手機中的APP都有一個沙盒,APP就是一個資訊孤島,相互是不可以進行通訊的。但是iOS的APP可以註冊自己的URL Scheme,URL Scheme是為方便app之間互相呼叫而設計的。我們可以通過系統的OpenURL來開啟該app,並可以傳遞一些引數。

例如:你在Safari裡輸入www.alipay.com,就可以直接開啟你的支付寶app,前提是你的手機裝了支付寶。如果你沒有裝支付寶,應該顯示的是支付寶下載介面,點選會跳到AppStore的支付寶下載介面。

URL Scheme必須能唯一標識一個APP,如果你設定的URL Scheme與別的APP的URL Scheme衝突時,你的APP不一定會被啟動起來。因為當你的APP在安裝的時候,系統裡面已經註冊了你的URL Scheme。

一般情況下,是會呼叫先安裝的app。但是iOS的系統app的URL Scheme肯定是最高的。所以我們定義URL Scheme的時候,儘量避開系統app已經定義過的URL Scheme。

註冊URL Scheme

1.在info.plist裡新增URL types

每一個專案裡面都會有一個info.plist配置檔案。找到info.plist,右鍵選擇Add Row,然後選擇URL types。

2.新增URL Schemes

新增完URL types,點選展開。右鍵選擇Add Row,新增URL Schemes:

3.設定URL Schemes

設定URL Schemes,根據自己的需求設定,一定要有自己App的特點

4.設定URL Identifier

URL Identifier是自定義的 URL scheme 的名字,一般採用反轉域名的方法保證該名字的唯一性,比如 com.Demo.www

如圖所示:

這些設定完成後,我們可以通過呼叫一個方法來檢驗之後的測試效果,如下:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url
{
    // 接受傳過來的引數
    NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"打開了自己的DemoApp"
                                           message:text
                                          delegate:nil
                                 cancelButtonTitle:@"OK"
                                 otherButtonTitles:nil];
    [alertView show];
    return YES;
}

執行專案,然後關閉專案,然後在Safari中搜索剛才設定的URL Schemes,效果圖如:iOSMyDemoApp://或iOSMyDemoApp://com.Demo.www

通過另一個APP啟動註冊了URL Schemes的APP

開啟註冊iOSDevTip的APP格式為: URL Scheme://URL identifier,直接呼叫URL Scheme也可開啟程式, URL identifier是可選的。

 NSString *url = @"iOSMyDemoApp://";
//    NSString *url = @"iOSMyDemoApp://com.Demo.www
";
if ([[UIApplication sharedApplication]
     canOpenURL:[NSURL URLWithString:url]])
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
else
{
    NSLog(@"can not open URL scheme iOSDevTip");
}