Swift: как открыть новое приложение при нажатии UIButton
У меня есть приложение, и когда нажимается uibutton, я хочу открыть другое приложение, которое уже установлено (например, Waze). Как я могу сделать это? Большое спасибо.
6 ответов
Попробуй это. Например, вы хотите открыть приложение Instagram:
var instagramHooks = "instagram://user?username=johndoe"
var instagramUrl = NSURL(string: instagramHooks)
if UIApplication.sharedApplication().canOpenURL(instagramUrl!)
{
UIApplication.sharedApplication().openURL(instagramUrl!)
} else {
//redirect to safari because the user doesn't have Instagram
UIApplication.sharedApplication().openURL(NSURL(string: "http://instagram.com/")!)
}
Во втором приложении
Перейдите к plist-файлу SecondApp, и вам нужно добавить схемы URL со строкой iOSDevTips(конечно, вы можете написать еще одну строку. Это ваше дело).
2 В FirstApp
Создайте кнопку с нижеуказанным действием:
- (void)buttonPressed:(UIButton *)button
{
NSString *customURL = @"iOSDevTips://";
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error"
message:[NSString stringWithFormat:@"No custom URL defined for %@", customURL]
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
}
Вот и все. Теперь, когда вы можете нажать кнопку в FirstApp, она должна открыть SecondApp.
Для получения дополнительной информации обратитесь сюда
Вы можете посмотреть Waze Community для справки.
Фрагмент кода Objective-C:
if ([[UIApplication sharedApplication]
canOpenURL:[NSURL URLWithString:@"waze://"]]) {
// Waze is installed. Launch Waze and start navigation
NSString *urlStr =
[NSString stringWithFormat:@"waze://?ll=%f,%f&navigate=yes",
latitude, longitude];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
} else {
// Waze is not installed. Launch AppStore to install Waze app
[[UIApplication sharedApplication] openURL:[NSURL
URLWithString:@"http://itunes.apple.com/us/app/id323229106"]];
}
Фрагмент кода Swift:
if UIApplication.shared.canOpenURL(URL(string: "waze://")!) {
// Waze is installed. Launch Waze and start navigation
let urlStr = String(format: "waze://?ll=%f, %f&navigate=yes", latitude, longitude)
UIApplication.shared.openURL(URL(string: urlStr)!)
} else {
// Waze is not installed. Launch AppStore to install Waze app
UIApplication.shared.openURL(URL(string: "http://itunes.apple.com/us/app/id323229106")!)
}
В Swift 4 вы можете использовать:
if let url = URL(string: "\(myUrl)") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
В swift4 waze
class FullMapVC: UIViewController {
var lat:CLLocationDegrees?
var long:CLLocationDegrees?
func wazeMaps()
{
let openUrl = URL(string: "waze://?ll=\(String(describing: lat!)),\(String(describing: long!))&navigate=yes")!
UIApplication.shared.open(openUrl , options:[:]) { (success) in
if !success
{
}
}
}
}
замените URL, если вы хотите использовать карты Google
let openUrl = URL(string: "comgooglemaps://?saddr=&daddr=\(String(describing: lat!)),\(String(describing: long!))&directionsmode=driving")!
Для Swift 4/5 / ... вы можете сделать это правильно следующим образом:
if let url = URL(string: url), UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
} else {
// display error ?
}