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

來源:互聯網
上載者:User

標籤:blog   http   io   ar   color   os   使用   sp   for   

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

一、簡介

最實際項目開發中,我們難免會遇到需要從一個應用跳轉到另一個應用的情況。比如分享,實際就是一種應用間的跳轉。但是有時候我們需要實現自己的兩個應用間的跳轉,以便可以推廣我們其他的應用。這個時候我們需要使用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??代碼部分(在另外的程式中)

view sourceprint? 01. - ( void )viewDidLoad 02. { 03. [ super  viewDidLoad]; 04.  05. UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 06. btn.frame = CGRectMake( 100 100 120 50 ); 07. [btn setTitle:@ "測試123"  forState:UIControlStateNormal]; 08. [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 09. btn.titleLabel.font = [UIFont systemFontOfSize: 14.0 ]; 10. [btn setBackgroundColor:[UIColor redColor]];; 11. [btn addTarget:self action: @selector (btnClick) forControlEvents:UIControlEventTouchUpInside]; 12.  13. [self.view addSubview:btn]; 14. } 15.  16. - ( void )btnClick 17. { 18. NSURL * myURL_APP_A = [NSURL URLWithString:@ "openurl1://" ]; 19. if  ([[UIApplication sharedApplication] canOpenURL:myURL_APP_A]) { 20. NSLog(@ "canOpenURL" ); 21. [[UIApplication sharedApplication] openURL:myURL_APP_A]; 22. } 23. }

三、判斷應用的啟動方式

view sourceprint? 1. - (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。 如果要在啟動時,做出一些區分,那就需要在下面的代碼做處理。 比如:應用可以被某個其它應用調起(作為該應用的子應用),要實現單點登入,那就需要在啟動代碼的地方做出合理的驗證,並跳過登入
view sourceprint? 01. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 02. { 03. NSLog(@ "%@" , launchOptions); 04. NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; 05. if (url){} 06. NSString *bundleId = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; 07. if (bundleId){} 08. UILocalNotification * localNotify = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 09. if (localNotify){} 10. NSDictionary * userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 11. if (userInfo){} 12.  13. return  YES; 14. }

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

聯繫我們

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