1. 程式人生 > >iOS應用程式開發之應用間的跳轉

iOS應用程式開發之應用間的跳轉

  • 簡介
  • 配置和實現
  • 判斷應用啟動方式

一、簡介

最實際專案開發中,我們難免會遇到需要從一個應用跳轉到另一個應用的情況。比如微信分享,實際就是一種應用間的跳轉。但是有時候我們需要實現自己的兩個應用間的跳轉,以便可以推廣我們其他的應用。這個時候我們需要使用UIApplication的openURL:的方法

二、配置

1⃣️註冊自定義的URL

首先被啟動的應用需要向iPhone註冊一個自定義URL協議。這是在你的專案資料夾的info.plist檔案進行的

1. 右鍵,選擇“Add Row”, Key值選擇“URL types”
2. 開啟“Item 0″,然後為該key增加一個URL identifier。可以是任何值,但建議用“反域名”(例如 “com.open.url”)。
3. 在“Item 0”下再加一行。
4. 選擇“URL Schemes” 作為Key。
5. 輸入你的URL協議名 (例如“openurl1://” 應寫做“openurl”)。如果有必要,你可以在這裡加入多個協議。

圖解:

2⃣️程式碼部分(在另外的程式中)

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(100, 100, 120, 50);
    [btn setTitle:@"測試123" forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    btn.titleLabel.font 
= [UIFont systemFontOfSize:14.0]; [btn setBackgroundColor:[UIColor redColor]];; [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; } - (void)btnClick { NSURL * myURL_APP_A = [NSURL URLWithString:@"openurl1://
"]; if ([[UIApplication sharedApplication] canOpenURL:myURL_APP_A]) { NSLog(@"canOpenURL"); [[UIApplication sharedApplication] openURL:myURL_APP_A]; } }

三、判斷應用的啟動方式

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

 通過AppDelegate裡面的回撥方法,可以確定應用的啟動方式。launchOptions包含了我們需要的引數

說明:當應用程式啟動時執行,應用程式啟動入口。只在應用程式啟動時執行一次。application引數用來獲取應用程式的狀態、變數等,值得注意的是字典引數:(NSDictionary *)launchOptions,該引數儲存程式啟動的原因。
1.若使用者直接啟動,lauchOptions內無資料;
2.若由其他應用程式通過openURL:啟動,則UIApplicationLaunchOptionsURLKey對應的物件為啟動URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey對應啟動的源應用程式的bundle ID (NSString);
3.若由本地通知啟動,則UIApplicationLaunchOptionsLocalNotificationKey對應的是為啟動應用程式的的本地通知物件(UILocalNotification);
4.若由遠端通知啟動,則UIApplicationLaunchOptionsRemoteNotificationKey對應的是啟動應用程式的的遠端通知資訊userInfo(NSDictionary);
其他key還有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
UIApplicationLaunchOptionsNewsstandDownloadsKey。 如果要在啟動時,做出一些區分,那就需要在下面的程式碼做處理。 比如:應用可以被某個其它應用調起(作為該應用的子應用),要實現單點登入,那就需要在啟動程式碼的地方做出合理的驗證,並跳過登入
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"%@", launchOptions);
    NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
    if(url){}
    NSString *bundleId = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
    if(bundleId){}
    UILocalNotification * localNotify = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if(localNotify){}
    NSDictionary * userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if(userInfo){}
    
    return YES;
}

相關推薦

iOS應用程式開發應用

簡介 配置和實現 判斷應用啟動方式 一、簡介 最實際專案開發中,我們難免會遇到需要從一個應用跳轉到另一個應用的情況。比如微信分享,實際就是一種應用間的跳轉。但是有時候我們需要實現自己的兩個應用間的跳轉,以便可以推廣我們其他的應用。這個時候我們需要使用UIApplication的openUR

php程式開發實現網頁的三種方式

PHP目前是用來開發WEB專案的首選語言。Web專案中,從一個網頁跳轉到另一個網頁是最常用的技術之一。使用者單擊連結、按鈕或者系統邏輯等等都需要實現頁面跳轉。 本文介紹PHP開發中常用的實現頁面自動跳轉的方法。 方式一:header()實現301重定向 <?ph

微信小程式學習路——頁面

前言 本以為微信小程式的頁面跳轉只是幾個簡單的api,一開始就沒太留意,在實際工作中發現,微信小程式的頁面跳轉也有很多地方應該注意,其中之一就是因為頁面跳轉而觸發的生命週期函式,這個點我認為是很重要的一個點,因此,本篇就把這兩個點放在一起記錄起來,方便日後翻閱

iOS開發 應用相互

gpo 用戶隱私 spa container 下載 containe canopen itunes cep 1. 應用間相互跳轉簡介 在iOS開發的過程中,我們經常會遇到需要從一個應用程序A跳轉到另一個應用程序B的場景。這就需要我們掌握iOS應用程序之間的相互跳轉知識。

Java應用程式開發學習Iterator介面

Iterator是Java中的一個介面: 該介面提供瞭如下方法: 通過前面https://blog.csdn.net/morixinguan/article/details/85006962介面的學習我們已經瞭解到,介面需要一個子類去實現它的方法,而在相關的類中已經實現了對應

Java應用程式開發學習多型

在Java中,使用關鍵字extends繼承或者關鍵字implements實現,是Java實現多型性的前提。 一、Java多型定義的格式 父類引用指向之類物件稱之為多型,多型的定義格式主要有兩種。 (1)父類名稱 物件名 = new 子類名稱(); (2)介面名稱 物件名 = new

Java應用程式開發學習介面

一、介面的抽象方法定義: 在任何版本的java中,介面都能定義抽象方法 格式: public abstract 返回值型別 方法名稱(引數列表); 注意事項: 1.介面當中的抽象方法,修飾符必須是兩個固定的關鍵字:public abstract 2.這兩個關鍵字修飾符,可以選擇性省略

Java應用程式開發學習繼承

面對物件程式語言有三類特性,分別是封裝性、繼承性以及多型性。 本節就來簡單介紹下Java的繼承。 一、繼承的簡單介紹、特點、規則 繼承是多型的前提,如果沒有繼承,就沒有多型。繼承主要解決的問題是:共性抽取(解決重複程式碼的問題)。 Java繼承知識點裡兩個重要的名詞:父類和子類

Java應用程式開發學習static關鍵字應用

Java的static關鍵字和C/C++語言的關鍵字有所不同: 一旦在Java裡使用了static關鍵字,那麼這樣的內容不再屬於物件自己,而是屬於類本身的,所以凡是本類的物件,都共享一份。 1、使用Java static關鍵字修飾成員變數 以下是Stundent類。 packag

Java應用程式開發學習String類的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟: https://blog.csdn.net/morixinguan/article/details/84956938 Java字串主要有以下特點: 1、字串的內容永不改變 2、由於字串的內容不可改變,所以字串是可以共享使用的,類似於C

Java應用程式開發學習集合ArrayList類的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟: https://blog.csdn.net/morixinguan/article/details/84956938     這節,來介紹下集合ArrayList的使用方法,回到上一篇文章的,我們一樣跟著腳步來學習使用

Java應用程式開發學習程式編寫步驟詳細解析

最近需要預備APK的開發,由於接觸java不多,久而久之也就忘了,寫個部落格做一下學習備忘。 牢記開發步驟,才能避免以後不會走彎路。 1、開啟JDK APIXXX手冊(這裡以JDK API1.6中文版為例,找Scanner類的使用方法) 2、導包    

基於Swift的iOS應用程式開發:通過UITextFieldDelegate快速理解Delegate事件代理

// // 關於文字輸入框的事件代理,摘錄蘋果開發者中心的官方解釋如下: //*******************************************************************************************// //* To understand wh

iOS開發應用內檢測手機鎖屏,解鎖狀態

iPhone的鎖屏監測分為兩種方式監聽: 1. 程式在前臺,這種比較簡單。直接使用Darwin層的通知就可以了: #import <notify.h> #define NotificationLock CFSTR("com.apple.springboa

android 應用程式

Sending the User to Another App Android最重要的特性之一就是:一個應用可以基於不同的 action,把使用者推送到其他應用中去。比如說,如果你想在你的應用中顯示一張帶有商店地址的地圖,你並不需要在自己的應用中去實現一個顯示地圖的Act

Android軟體開發應用程式之間的通訊介紹

Android 開發中在程式之間通訊的介面做的還是非常豐富的本例主要向大家介紹程式之間是如何進行溝通,有哪幾種溝通方式如何來實現溝通。 1.      使用handler傳遞訊息     handler 大家可以把它想象成主執行緒(UI執行緒)的一個子執行緒,它可以給主執

.Net語言 APP開發平臺——Smobiler學習日誌:在手機應用開發中如何實現地圖

demo hand 操作 窗體 clas com ps1 ati void 一、目標樣式 我們要實現上圖中的效果,需要如下的操作: 二、跳轉地圖代碼 VB: Private Sub Button1_Click(sender As Object, e As Ev

安卓開發應用上架的那些事兒

應用市場 需要 不一致 安裝失敗 安卓開發 安卓 app 上架 那些事兒   工作的過程中遇到這樣的需求:要上架這個App到應用市場中,但是,應用市場中已經有了叫同樣名稱的App了,新上架的要頂替原來的,並且用戶安裝時以前下載到手機裏的這個名稱的app被替換掉。   這時我

Spark應用程式開發引數調優深入剖析-Spark商業調優實戰

本套系列部落格從真實商業環境抽取案例進行總結和分享,並給出Spark商業應用實戰指導,請持續關注本套部落格。版權宣告:本套Spark商業應用實戰歸作者(秦凱新)所有,禁止轉載,歡迎學習。 Spark商業應用實戰-Spark資料傾斜案例測試及調優準則深入剖析 Spark商業應用實戰-Spark資源

Windows應用程式開發

Windows窗體應用程式開發:WinForm、桌面應用程式,有可執行檔案(.exe)即安裝包。是一種C/S(客戶機/伺服器)架構應用程式 1.Windows窗體應用程式,用視覺化的窗體和控制元件生成豐富介面的,可互動操作的應用程式。從工具箱選擇相應控制元件,拖曳到窗體介面,通過設定其屬性,佈局外觀。雙擊控制