應用程序互相跳轉
- 應用場景
- 使用第三方用戶登錄,需要用戶授權,還需要"返回到調用的程序, 同時返回授權的用戶名"
- 應用程序推廣,網易彩票,設置-推薦應用-有很多應用程序圖標
- 如果本機已經安裝過,會直接跳轉到另外一個應用程序
- 軟件的廣告,推廣結果,后續會有一些列的金錢上的結算
- 支付寶,第三方支付,淘寶,電話費充值。。。
要打開本機上的其他應用程序,需要設置schemes(),自定義的協議頭,可以打開其他的應用程序
跳轉的代碼如下:
- (IBAction)openWangyi:(id)sender
{
//跳轉到其他app程序appstore下載界面
//NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/app/id425349261?mt=8"];
//直接跳轉到app,注意格式要正確以及名字(newsapp://)(網易新聞)
NSURL *url = [self getUrl:@"newsapp"];
// 判斷本機是否安裝了目標程序
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
} else {
NSLog(@"沒有安裝,可以再給定下載地址,前往");
}
}
- (NSURL *)getUrl:(NSString *)url
{
NSString *urlStr = [NSString stringWithFormat:@"%@://", url];
return [NSURL URLWithString:urlStr];
}
注意:如何獲得app的下載地址以及名字是個問題
- 查找app的下載地址
- 得到應用程序的名稱以及版本號
NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];
NSString*appName =[infoDict objectForKey:@"CFBundleDisplayName"];
NSString*text =[NSString stringWithFormat:@"%@ %@",appName,versionNum];
新浪微博的授權界面說明:
- 在新浪微博中,本身不能直接跳轉到該界面
- 用其他應用程序打開時,如果scheme時weibo://oaauth,直接進入此界面
- 如果直接點擊,返回,返回調用放應用程序
- 如果點擊表格行中的用戶名,直接返回用戶信息給調用應用程序
- 如果要返回調用的應用程序,需要知道調用我們的應用程序的scheme
/** 只要是由其他應用程序打開的,就會調用此方法 */
/** URL 就是其他應用程序,打開當前程序使用的URL */
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
/**
openURL 是打開當前應用程序的url
sourceApplication 是當開當前應用程序的源程序的BundleId
提示:一旦重寫了新方法,舊方法就不再被執行
但是:很多第三方框架,都建議兩個方法全都寫
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation