最全經典總結: ios跳轉到第三方應用,APP互相跳轉傳值

來源:互聯網
上載者:User

最好添加支援http協議  info plist加

<dict>    <key>NSAllowsArbitraryLoads</key>    <true/></dict>

注意:

模擬器中也是可以跳轉的,模擬器第一次跳轉APP會彈出一個提示框。

真機不會彈提示框

這裡的 URL identifier選填,URL Schemes必填

URL Schemes建議都小寫,由於之後接收到資料的時候,不區分大寫和小寫, 都是轉為小寫。比如URL Schemes填寫 CESHI 其實和 填寫ceshi 一樣





pedometer應用:

開啟info.plist    info選項卡添加一個數組 LSApplicationQueriesSchemes Array  數組一: item 0: ceshi01

在 info選項卡最下方的 URL Types中   identifier 不需要填寫   URL Schemes: pedometer

- (void)performanceAction:(UIButton *)sender {

    NSURL *otherAppUrl = [NSURLURLWithString:@"ceshi01://"];

    //判斷當前系統是否有安裝第三方app用戶端

    if([[UIApplicationsharedApplication]canOpenURL:otherAppUrl]){

        [[UIApplicationsharedApplication]openURL:otherAppUrl];

    }else{

        //開啟一個網頁

        NSURL *myUrl = [NSURLURLWithString:@"https://www.baidu.com/"];

        [[UIApplicationsharedApplication]openURL:myUrl];

        

    }

}



ceshi01應用:

LSApplicationQueriesSchemes Array

item 0: pedometer

URL Types中    identifier 不需要填寫   URL Schemes: ceshi01  若不填寫對方跳轉不進來

- (IBAction)jumpToOtherAppAction:(UIButton *)sender {

   NSURL *otherAppUrl = [NSURL URLWithString:@"pedometer://"]; //規定的格式是   URL Schemes://傳遞的訊息           傳遞的訊息區分大小寫

    //這裡的pedometer表示第三方應用的info.plist 的URL Types 有一個 URL Schemes 為 pedometer  並不需要第三方應用的工程名字為pedometer,

   也不需要第三方應用的 Bundle Identifier 末尾為pedometer (即:com.XXXXX.pedometer形式),也就是說應用之間跳轉與工程名無關,也與 Bundle Identifier無關

這裡暫且將URL Schemes 裡的 pedometer  稱之為 “跳轉KEY”

    // 判斷當前系統是否有安裝第三方app用戶端

    if([[UIApplication sharedApplication] canOpenURL:otherAppUrl]){

        [[UIApplication sharedApplication] openURL:otherAppUrl];

    }else{

        //開啟一個網頁

        NSURL *myUrl = [NSURL URLWithString:@"https://www.baidu.com/"];

        [[UIApplication sharedApplication] openURL:myUrl];        

    }

}

經過以上設定兩個app就可以互相跳轉了


經過本人的反覆測試:(雙向跳轉就是雙方應用均滿足以下的單向跳轉)

單向跳轉的流程猜測**********************************************************:


比如應用ceshi02跳轉到應用pedometer

第一步:跳轉代碼:

- (IBAction)jumpAction:(UIButton *)sender {

    NSURL *otherAppUrl = [NSURLURLWithString:@"jumpkey://"];

    // 判斷當前系統是否有安裝第三方app用戶端

    if([[UIApplicationsharedApplication]canOpenURL:otherAppUrl]){

        [[UIApplicationsharedApplication]openURL:otherAppUrl];

    }else{

        //開啟一個網頁

        NSURL *myUrl = [NSURLURLWithString:@"https://www.baidu.com/"];

        [[UIApplicationsharedApplication]openURL:myUrl];        

    }    

}

第二步:自己應用中:查詢[NSURL URLWithString:@"jumpkey://"]; 中的jumpkey  在LSApplicationQueriesSchemes中是否查詢的到 否則會報錯 

-canOpenURL: failed for URL: "pedometer://" - error: "This app is not allowed to query for scheme pedometer"

第三步:第三方應用pedometer中URL Schemes 有  jumpkey   若有就跳轉

否則會報錯 -canOpenURL: failed for URL: "pedometer://" - error: "(null)"

這三步缺一不可

注意:若ceshi02滿足以上跳轉後,當想從應用pedometer跳回ceshi02時 也必須滿足以上跳轉的三個步驟,只不過身份對調了

若不滿足跳轉的三個步驟 那麼不能跳回 應用ceshi02      但是不影響系統自動產生的 左上方的  返回“ceshi02” 按鈕 返回自身ceshi02的應用










下面研究應用之間傳值:首先跳轉得滿足以上三個步驟 這裡不再贅述

應用pedometer  給 應用ceshi 傳值


1.應用pedometer 中:

- (void)serviceAction:(UIButton *)sender {

    

    NSURL *otherAppUrl = [NSURLURLWithString:@"ceshi://hello"];  //hello 為訊息

    // 判斷當前系統是否有安裝第三方app用戶端

    if([[UIApplicationsharedApplication]canOpenURL:otherAppUrl]){

        [[UIApplicationsharedApplication]openURL:otherAppUrl];

    }else{

        //開啟一個網頁

        NSURL *myUrl = [NSURLURLWithString:@"https://www.baidu.com/"];

        [[UIApplicationsharedApplication]openURL:myUrl];

        

    }

    

}


2. 應用ceshi 中

AppDelegate中

message 列印為  hello

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

{

    NSString* message = [[urlhost]stringByRemovingPercentEncoding];

    NSLog(@"%@",message);

    returnYES;

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.