ฉันจะเปิด Safari จากแอพ iPhone ได้อย่างไร


127

นี่อาจเป็นคำถามที่ค่อนข้างชัดเจน แต่คุณสามารถเปิดเบราว์เซอร์ Safari จากแอพ iPhone ได้หรือไม่?

คำตอบ:


200

ควรเป็นดังต่อไปนี้:

NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

สิ่งนี้จะนับรวมในการใช้หน่วยความจำของแอปหรือไม่ นอกจากนี้ยังมีวิธีที่ดีในการกลับไปที่แอปของคุณ (เช่นคุณสมบัติการเข้าสู่ระบบในเว็บไซต์โซเชียลเน็ตเวิร์ก)
brendan

1
@brendan ฉันเดาว่าจะไม่เป็นเพราะฉันคิดว่า 'webview' เปิดตัวในแอปพลิเคชันซาฟารีดังนั้นมันจะอยู่ภายใต้กระบวนการนั้น
surtyaar

12
หลอกของคำตอบก่อนหน้า 5/9/09
บาเร็ตต์

2
@Barett: ไม่จริงอย่างแน่นอนเพราะนั่นคือคำตอบ
9/21/09

4
IMO การเรียก API คล้ายกันมากพอที่จะนำคำตอบนี้ไปใช้ในการแก้ไขหรือแสดงความคิดเห็นในคำตอบก่อนหน้าได้ดีขึ้น
บาเร็ตต์

52

UIApplication มีวิธีการที่เรียกว่า openURL:

ตัวอย่าง:

NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];

if (![[UIApplication sharedApplication] openURL:url]) {
  NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

16

คุณสามารถเปิด url ในซาฟารีด้วยสิ่งนี้:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.google.com"]];

4

ด้วย iOS 10 เรามีวิธีการหนึ่งที่แตกต่างกันด้วยตัวจัดการที่สมบูรณ์ :

objectivec:

NSDictionary *options = [NSDictionary new];
//options can be empty
NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];
[[UIApplication sharedApplication] openURL:url options:options completionHandler:^(BOOL success){
}];

สวิฟท์:

let url = URL(string: "http://www.stackoverflow.com")
UIApplication.shared.open(url, options: [:]) { (success) in
}

2

อาจมีบางคนสามารถใช้เวอร์ชัน Swift ได้:

ใน 2.2 ที่รวดเร็ว:

UIApplication.sharedApplication().openURL(NSURL(string: "https://www.google.com")!)

และ 3.0:

UIApplication.shared().openURL(URL(string: "https://www.google.com")!)

2

ใน 4 และ 5 อย่างรวดเร็วเนื่องจาก OpenURL ถูกหักค่าเสื่อมราคาวิธีง่ายๆในการทำเช่นนี้ก็เป็นเพียง

if let url = URL(string: "https://stackoverflow.com") {
    UIApplication.shared.open(url, options: [:]) 
}

SafariServicesนอกจากนี้คุณยังสามารถใช้ บางอย่างเช่นหน้าต่าง Safari ภายในแอปของคุณ

import SafariServices

...

if let url = URL(string: "https://stackoverflow.com") {
    let safariViewController = SFSafariViewController(url: url)        
    self.present(safariViewController, animated: true)
}

แม้ว่าข้อมูลโค้ดนี้อาจช่วยแก้ปัญหาได้ แต่การมีคำอธิบายจะช่วยปรับปรุงคุณภาพของคำตอบของคุณ โปรดจำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตและบุคคลเหล่านั้นอาจไม่ทราบสาเหตุของการแนะนำโค้ดของคุณ
Stefan Crain

1

ใน Swift 3.0 คุณสามารถใช้คลาสนี้เพื่อช่วยในการสื่อสารกับ ผู้ดูแลกรอบงานได้เลิกใช้หรือลบคำตอบก่อนหน้านี้

นำเข้า UIKit

คลาส InterAppCommunication {
    openURI func คงที่ (_ URI: String) {
        UIApplication.shared.open (URL (สตริง: URI)!, ตัวเลือก: [:], completeHandler: {(succ: Bool) ในการพิมพ์ ("Complete! Success? \ (succ)")})
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.