কীভাবে সুইফট 3 এ ইউআরএল খুলবেন


149

openURLসুইফট 3-এ অবচয় করা হয়েছে। openURL:options:completionHandler:ইউআরএল খোলার চেষ্টা করার পরে প্রতিস্থাপন কীভাবে কাজ করে তার কিছু উদাহরণ কেউ দিতে পারেন ?

উত্তর:


385

তোমার যা দরকার তা হল:

guard let url = URL(string: "http://www.google.com") else {
  return //be safe
}

if #available(iOS 10.0, *) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
    UIApplication.shared.openURL(url)
}

আমি যদি আমার ইউআরএলে '+' অপারেটর ব্যবহার করি তবে কী হবে? উদাহরণস্বরূপ: " xxxxx.com./… " এটি পছন্দ করে। এই স্ট্রিংটি আমাকে একটি ত্রুটি দিয়েছে "না '+' প্রার্থীরা প্রত্যাশিত প্রাসঙ্গিক ফলাফলের ধরণের 'URL' উত্পাদন করে
ইব্রাহিম BOLAT

আপনাকে তার Stringপরিবর্তে + অপারেটরটি ব্যবহার করতে হবেURL
দেবরান কসমো ইউেনাল

পার্শ্ব দ্রষ্টব্য: এটি করার চেষ্টা করবেন না: ইউআইএপ্লিকেশন.শ্রেড.ওপেন URL (ইউআরএল (স্ট্রিং: "এখানে url সন্নিবেশ করুন")!)। এক্সকোড 8-এ সংকলকটি বিভ্রান্ত হয়ে পড়বে এবং সঠিকভাবে তৈরি করতে সক্ষম হবে না। সুতরাং ঠিক যেমন এই সমাধান ব্যবহার করুন। দুর্দান্ত কাজ! ধন্যবাদ।
জোয়েল

আমি সাফারিটি না খালি কীভাবে url খুলব? আমি কীভাবে ইউআরএলটিকে পটভূমিতে "খোলা" যেতে পারি? দয়া করে এখানে আমার প্রশ্নের উত্তর দিন: stackoverflow.com/questions/43686252/…
খ্রিস্টান ক্রাইটার

1
আপনার মানে সুইফট আপনাকে কোনও URL খোলার মতো জটিল কিছু করার জন্য দেয়াল আরোহণ করে না? [চোয়াল বাদ]
ড্যানিয়েল স্প্রিঙ্গের

36

উপরের উত্তরটি সঠিক তবে আপনি যদি এটি পরীক্ষা করতে চান canOpenUrlবা না চান তবে।

let url = URL(string: "http://www.facebook.com")!
if UIApplication.shared.canOpenURL(url) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
    //If you want handle the completion block than 
    UIApplication.shared.open(url, options: [:], completionHandler: { (success) in
         print("Open url : \(success)")
    })
}

দ্রষ্টব্য: আপনি যদি সম্পূর্ণতাটি পরিচালনা করতে না চান তবে আপনি এটিও লিখতে পারেন।

UIApplication.shared.open(url, options: [:])

completionHandlerএতে ডিফল্ট মান রয়েছে বলে লেখার দরকার নেই nil, আরও বিশদের জন্য অ্যাপল ডকুমেন্টেশন চেক করুন ।


28

আপনি যদি অ্যাপ্লিকেশনটি না রেখে নিজেই অ্যাপের ভিতরে খুলতে চান তবে আপনি সাফারি সার্ভিসেস আমদানি করতে পারেন এবং এটি কার্যকর করতে পারেন।

import UIKit
import SafariServices

let url = URL(string: "https://www.google.com")
let vc = SFSafariViewController(url: url!)
present(vc, animated: true, completion: nil)

1
এই পদ্ধতিটি iOS নির্দেশিকা অনুসারে সেরা অনুশীলন
gtrujillos

8

সুইফট 3 সংস্করণ

import UIKit

protocol PhoneCalling {
    func call(phoneNumber: String)
}

extension PhoneCalling {
    func call(phoneNumber: String) {
        let cleanNumber = phoneNumber.replacingOccurrences(of: " ", with: "").replacingOccurrences(of: "-", with: "")
        guard let number = URL(string: "telprompt://" + cleanNumber) else { return }

        UIApplication.shared.open(number, options: [:], completionHandler: nil)
    }
}

আপনি এর সাথে একটি নিয়মিত অভিব্যক্তি ব্যবহার করতে পারেন replacingOccurrences
সুলতান

2

আমি ম্যাকোস সিয়েরা (v10.12.1) এক্সকোড ভি 8.1 সুইফট 3.0.1.1 ব্যবহার করছি এবং এখানে ভিউকন্ট্রোলআর সুইটটিতে আমার জন্য কী কাজ করেছে:

//
//  ViewController.swift
//  UIWebViewExample
//
//  Created by Scott Maretick on 1/2/17.
//  Copyright © 2017 Scott Maretick. All rights reserved.
//

import UIKit
import WebKit

class ViewController: UIViewController {

    //added this code
    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Your webView code goes here
        let url = URL(string: "https://www.google.com")
        if UIApplication.shared.canOpenURL(url!) {
            UIApplication.shared.open(url!, options: [:], completionHandler: nil)
            //If you want handle the completion block than
            UIApplication.shared.open(url!, options: [:], completionHandler: { (success) in
                print("Open url : \(success)")
            })
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


};

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.