iOS - (兩個APP之間的跳轉)

來源:互聯網
上載者:User

一個程式若要跳到另一個程式。需要在目標程式的plist檔案裡面修改:

開啟info.plist,添加一項URL types

展開URL types,再展開Item0,將Item0下的URL identifier修改為URL Scheme

展開URL Scheme,將Item0的內容修改為 SecondApp(此為跳轉的key)

 

 

 

 

話不多說,下面開始講解步驟:

  首先建立兩個工程,第一個 FirstAPP , 第二個 SecondAPP

 

第一個 First APP 的 info.plist 需要設定 key(url) 與 白名單

 

接下來我們再對第二個 SecondAPP 工程來做相應的處理

 

 

   將這兩個工程設定好了之後,接下來上代碼

  第一個 FirstApp工程

//

//  ViewController.m

//  FirstAPP

//

//  Created by luorende on 16/8/25.

//  Copyright © 2016年 luorende. All rights reserved.

//

 

#import "ViewController.h"

@interface ViewController ()

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(100, 100, 200, 50);

    button.backgroundColor = [UIColor darkGrayColor];

    [button setTitle:@"跳轉到SecondApp" forState:UIControlStateNormal];

    button.titleLabel.font = [UIFont systemFontOfSize:20];

    [button addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];

}

//跳轉到SecondApp

-(void)clickButton:(UIButton *)button{

    NSLog(@"執行了點擊事件");

    //之前配置的白名單,就是需要跳轉對方App的key,即對方設定的url

    NSString * UrlStr = @"SecondApp://xxxxx";

    NSURL * url = [NSURL URLWithString:UrlStr];

    // 在這裡可以先做個判斷

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

        [[UIApplication sharedApplication] openURL:url];

    }else{

        NSLog(@"應用程式未安裝");

    }  

}

//跳轉到AppStore

-(void)abc{

    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@""]];

    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@""]]; 

}

 

 

 

  第二個工程 SecondAPP 裡的代碼

 

//

//  ViewController.m

//  SecondAPP

//

//  Created by luorende on 16/8/26.

//  Copyright © 2016年 luorende. All rights reserved.

//

 

#import "ViewController.h"

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    

    UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(100, 100, 200, 100);

    button.backgroundColor = [UIColor darkGrayColor];

    [button setTitle:@"SecondApp,跳轉到另一個APP" forState:UIControlStateNormal];

    button.titleLabel.font = [UIFont systemFontOfSize:20];

    [button addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];

    

}

 

-(void)clickButton:(UIButton *)button{

    NSLog(@"執行了點擊事件");

    

    NSString * UrlStr = @"FirstAPP://xxxxx";

    NSURL * url = [NSURL URLWithString:UrlStr];

    

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

        [[UIApplication sharedApplication] openURL:url];

    }else{

        NSLog(@"應用程式未安裝");

    // 程式未成功跳轉,我們還可以做一個提示

        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"應用程式未安裝"message:@"確定下載<xxxx>應用嗎。" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"確定",nil];

        

        alertView.alertViewStyle = UIAlertViewStyleDefault;

        

        [alertView show];

        

    }

 

 

  註: 另外說明一下

例如:相互跳轉的時候雙方都要設定URL與白名單 ,若是 FirstAPP 不設定URL types 項(自己註冊自己URL)

 

則實現的功能是:FirstAPP 可以跳轉到 SecondAPP  ,但SecondAPP無法跳轉過來

 

 

當然雙方只設定 LSApplicationQueriesSchemes  項也是不行的,會提示應用程式未安裝  (白名單)

 

簡單說來 就是需要有一個要設定 URL 

 

自己設定了的話,就是說已經有了URL,別人不註冊, 使用設定白名單後也能跳轉

   總結:誰要跳,誰就要設定誰為白名單。  白名單要與跳到App設定的網域名稱URL 要保持一致 另外代碼部分的URL也要以網域名稱URL打頭即可

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.