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

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

1、簡介微信

最實際項目開發中,咱們不免會遇到須要從一個應用跳轉到另外一個應用的狀況。好比微信分享,實際就是一種應用間的跳轉。可是有時候咱們須要實現本身的兩個應用間的跳轉,以即可以推廣咱們其餘的應用。這個時候咱們須要使用UIApplication的openURL:的方法app


2、配置ide

1⃣️註冊自定義的URL測試

首先被啓動的應用須要向iPhone註冊一個自定義URL協議。這是在你的項目文件夾的info.plist文件進行的url

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」)。若是有必要,你能夠在這裏加入多個協議。spa

圖解:code

2⃣️代碼部分(在另外的程序中)orm

- (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];
    }
}

3、判斷應用的啓動方式對象

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

 經過AppDelegate裏面的回調方法,能夠肯定應用的啓動方式。launchOptions包含了咱們須要的參數blog

說明:當應用程序啓動時執行,應用程序啓動入口。只在應用程序啓動時執行一次。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;
}
相關文章
相關標籤/搜索