通过openURL: 可以实现app之间的跳转
NSURL *url = [NSURL URLWithString:@"yourappname://params"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
跳转必须要设置plist文件中LSApplicationQueriesSchemes和URL types
LSApplicationQueriesSchemes:表示你可以跳转的APP名,就是上面的yourappname
URL types:表示你的APP名,别人通过这个来跳转你的APP
如图所示设置参数,填写item 0 为你要设置的appname
跳转处理
在AppDelegate.m中写下面这个方法:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
此处url,即为跳转传过来的url;我们进行处理:
NSString *str = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//这里取params 即不包括前边的appname://
NSString *str = [[url absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//这里取完整的字符串
建议参数较多且含有“:”采用第二种;一般我们用openURL:来进行app之间的少量数据传输;如果数
据比较大,建议使用UIPasteboard,即跳转用URL实现,传值用UIPasteboard实现
参考 : http://blog.csdn.net/shengpeng3344/article/details/51404708
注意:
跳转的数据处理,请使用多线程,推出界面和UI相关请放到主线程才能保证跳转的流畅,不然停顿个十几秒,或者卡死,很正常;
多线程无非就是:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//数据处理代码
dispatch_async(dispatch_get_main_queue(), ^{
//界面UI代码,如PUSH界面,展示弹出视图等
});
};