কীভাবে সুইফট 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.