標籤: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應用程式開發之應用間的跳轉