একটি বোতাম ক্লিক করা হলে আমি কীভাবে ফোন সেটিংস খুলতে পারি?


159

আমি একটি অ্যাপ্লিকেশনটিতে এমন একটি বৈশিষ্ট্য প্রয়োগ করার চেষ্টা করছি যা ইন্টারনেট সংযোগ উপলব্ধ না হলে সতর্কতা দেখায়। সতর্কতাটির দুটি ক্রিয়া রয়েছে (ওকে এবং সেটিংস), যখনই কোনও ব্যবহারকারী সেটিংসে ক্লিক করে, আমি সেগুলি প্রোগ্রামিকভাবে ফোন সেটিংসে নিয়ে যেতে চাই।

আমি সুইফট এবং এক্সকোড ব্যবহার করছি।

উত্তর:


300

ব্যবহার UIApplication.openSettingsURLString

সুইফ্ট 5.1 এর জন্য আপডেট

 override func viewDidAppear(_ animated: Bool) {
    let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)

    let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in

        guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
            return
        }

        if UIApplication.shared.canOpenURL(settingsUrl) {
            UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
                print("Settings opened: \(success)") // Prints true
            })
        }
    }
    alertController.addAction(settingsAction)
    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
    alertController.addAction(cancelAction)

    present(alertController, animated: true, completion: nil)
}

সুইফট 4.2

override func viewDidAppear(_ animated: Bool) {
    let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)

    let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in

        guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
            return
        }

        if UIApplication.shared.canOpenURL(settingsUrl) {
            UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
                print("Settings opened: \(success)") // Prints true
            })
        }
    }
    alertController.addAction(settingsAction)
    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
    alertController.addAction(cancelAction)

    present(alertController, animated: true, completion: nil)
}

আমি কীভাবে এটি বাস্তবায়ন করব? @ মারিয়াস ফানু
সলোমন

এটি iOS8 @ মারিয়াস ফানু ব্যবহার করে
সলোমন

@AyoolaSolomon আমি একটি সতর্কতা যোগ করার জন্য আমার উত্তর আপডেট করেছি viewDidAppearপদ্ধতি সঙ্গে Settingsএবং Cancelবোতাম
Marius Fanu

2
না, আমি এটা মনে করি না। আপনার অ্যাপ্লিকেশনে যাওয়ার জন্য, আপনার অ্যাপ্লিকেশনটির একটি কাস্টম ইউআরএল স্কিম বাস্তবায়ন করা উচিত এবং UIApplication.sharedApplication().openURL(yourCustomURL)বর্তমান অ্যাপ্লিকেশন থেকে কল করা উচিত , তবে সেটিংস অ্যাপ্লিকেশন থেকে আপনার অ্যাক্সেস নেই
মারিয়াস ফানু ২:29

5
@ পার্সিয়ান ব্লু আইওএস 10.1.1 এ ঠিক আছে এটি সেটিংস অ্যাপ্লিকেশন চালু করতে ব্যর্থ।
মাইকেল গারিতো

237

Careful সাবধান!

এই উত্তরটি অননুমোদিত API এর উপর ভিত্তি করে এবং সম্প্রতি (আইওএস 12 থেকে) অ্যাপল এই পদ্ধতির সাথে অ্যাপ্লিকেশনগুলি প্রত্যাখ্যান করছে।

নীচে মূল উত্তর

সুইফট 5

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!, options: [:], completionHandler: nil)

সুইফট 4

UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!, options: [:], completionHandler: nil)

দ্রষ্টব্য: নীচের পদ্ধতিটি আইওএস 11 এর নীচে সমস্ত সংস্করণের জন্য কাজ করে, উচ্চতর সংস্করণগুলির জন্য অ্যাপ্লিকেশনটি এটি একটি ব্যক্তিগত API হিসাবে প্রত্যাখ্যাত হতে পারে

কখনও কখনও আমরা আমাদের অ্যাপ্লিকেশন সেটিংস ব্যতীত অন্য কোনও সেটিংসে যেতে চাই। নিম্নলিখিত পদ্ধতিটি আপনাকে এটি অর্জনে সহায়তা করবে:

প্রথমে আপনার প্রকল্পের URL টি স্কিমগুলি কনফিগার করুন। আপনি এটি লক্ষ্য -> তথ্য -> ইউআরএল স্কিমে পাবেন। ইউআরএল স্কিমগুলিতে + বোতামে ক্লিক করুন এবং প্রেফগুলি টাইপ করুন

এখানে চিত্র বর্ণনা লিখুন

সুইফট 5

UIApplication.shared.open(URL(string: "App-prefs:Bluetooth")!)

সুইফট 3

UIApplication.shared.open(URL(string:"App-Prefs:root=General")!, options: [:], completionHandler: nil)

দ্রুতগতি

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General")!)

উদ্দেশ্য গ

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]];

এবং নিম্নলিখিত সমস্ত উপলব্ধ ইউআরএল নিম্নলিখিত

** আইওএসে <12 **

  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = সম্পর্কে
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = অভিগম্যতা
  • অগ্রাধিকারগুলি: রুট = AIRPLANE_MODE
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = AUTOLOCK
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = ব্যবহার / CELLULAR_USAGE
  • অগ্রাধিকারগুলি: রুট = উজ্জ্বলতা
  • অগ্রাধিকারগুলি: রুট = ব্লুটুথ
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = DATE_AND_TIME
  • অগ্রাধিকারগুলি: রুট = FaceTime
  • অগ্রাধিকারগুলি: রুট = সাধারণ
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = কীবোর্ড
  • অগ্রাধিকারগুলি: রুট = CASTLE
  • অগ্রাধিকারগুলি: রুট = CASTLE & পথ = STORAGE_AND_BACKUP
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = ইন্টারন্যাশনাল
  • অগ্রাধিকারগুলি: রুট = LOCATION_SERVICES
  • অগ্রাধিকারগুলি: রুট = ACCOUNT_SETTINGS এর
  • অগ্রাধিকারগুলি: রুট = সঙ্গীত
  • অগ্রাধিকারগুলি: রুট = সঙ্গীত ও পাথ = EQ
  • অগ্রাধিকারগুলি: রুট = সঙ্গীত ও পাথ = VolumeLimit
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = নেটওয়ার্ক
  • অগ্রাধিকারগুলি: রুট = NIKE_PLUS_IPOD
  • অগ্রাধিকারগুলি: রুট = নোটস
  • অগ্রাধিকারগুলি: রুট = NOTIFICATIONS_ID
  • অগ্রাধিকারগুলি: রুট = ফোন
  • অগ্রাধিকারগুলি: রুট = ফটো
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = ManagedConfigurationList
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = রিসেট
  • অগ্রাধিকারগুলি: রুট = সাউন্ড & পথ = রিংটোন
  • অগ্রাধিকারগুলি: রুট = সাফারি
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = সহকারী
  • অগ্রাধিকারগুলি: রুট = সাউন্ড
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = SOFTWARE_UPDATE_LINK
  • অগ্রাধিকারগুলি: রুট = স্টোরে
  • অগ্রাধিকারগুলি: রুট = TWITTER
  • অগ্রাধিকারগুলি: রুট = ফেসবুক
  • প্রিফেস: রুট = জেনারেল এবং পাথ = ইউএসজি প্রিফেস: রুট = ভিডিও
  • অগ্রাধিকারগুলি: রুট = সাধারণ & পথ = নেটওয়ার্ক / VPN এর
  • অগ্রাধিকারগুলি: রুট = ওয়ালপেপার
  • অগ্রাধিকারগুলি: রুট = ওয়াইফাই
  • অগ্রাধিকারগুলি: রুট = INTERNET_TETHERING
  • অগ্রাধিকারগুলি: রুট = ফোন এবং পথ = অবরুদ্ধ
  • অগ্রাধিকারগুলি: রুট = DO_NOT_DISTURB

আইওএস 13 এ

  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = সম্পর্কে
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: AIRPLANE_MODE
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = AUTOLOCK
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: ব্লুটুথ
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = DATE_AND_TIME
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: FaceTime
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = কীবোর্ড
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: কাসল
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: কাসল & পথ = STORAGE_AND_BACKUP
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = ইন্টারন্যাশনাল
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সঙ্গীত
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: নোটস
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: NOTIFICATIONS_ID
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: ফোন
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: দা
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = ManagedConfigurationList
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = রিসেট
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: শব্দ & পথ = রিংটোন
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: শব্দ
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: সাধারণ & পথ = SOFTWARE_UPDATE_LINK
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: দোকান
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: ওয়ালপেপার
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: ওয়াইফাই
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: INTERNET_TETHERING
  • অ্যাপ্লিকেশান-অগ্রাধিকারগুলি: DO_NOT_DISTURB

    পরীক্ষিত না

  • অ্যাপ-প্রিফেস: টুইটার (??)

  • অ্যাপ্লিকেশন প্রেফেস: ফেসবুক (??)
  • অ্যাপ-প্রিফেস: NIKE_PLUS_IPOD (??)

দ্রষ্টব্য: নেটওয়ার্ক সেটিংটি কোনও সিমুলেটরটিতে খোলা হবে না, তবে লিঙ্কটি একটি আসল ডিভাইসে কাজ করবে।


7
এটি আইওএস 10 এর সাথে কাজ করে না IOS 9.3 এ একই কোডটি চালান। এবং এটি কাজ করেছে, আইওএস 10 এ চলেছে এবং এটি হয়নি (কোন ইউআরএল ব্যবহৃত হয় তা নির্বিশেষে)
গ্রানটেকস

18
আইওএস 10 এর জন্য, ইউআরএল স্ট্রিংয়ের স্কিম হিসাবে App-Prefsপরিবর্তে ব্যবহার করুন prefs। যেমনApp-Prefs:root=WIFI
ডেসমন্ড ডিএআই

8
অ্যাপ স্টোরটিতে এটি প্রকাশের জন্য সম্প্রতি একটি অ্যাপকে পর্যালোচনাতে দিয়েছে এবং অ্যাপল "প্রেফস: রুট" বা "অ্যাপ-প্রিফেস: রুট" ব্যবহারের কারণে এটি অস্বীকার করেছে। আমি এটি ওয়াইফাই সেটিংস খোলার জন্য ব্যবহার করেছি, যখন ব্যবহারকারীর কোনও ইন্টারনেট সংযোগ নেই।
মার্সেল টি

21
যেহেতু আইওএস 12 শীঘ্রই প্রকাশিত হচ্ছে, অ্যাপল এই অ্যাপ্লিকেশনটিকে প্রত্যাখ্যান করে যা এর মধ্যে রয়েছে। এটি সম্পর্কে সচেতন হন। এমনকি আমার অ্যাপ্লিকেশনটিও প্রত্যাখ্যাত হয়েছে
থিহা অং

8
এগুলি প্রাইভেট এপিআই এর হিসাবে App-Prefsবা prefs:rootএটি ব্যবহার করবেন না এবং আপনি খুব ভাগ্যবান না হলে আপনার অ্যাপ্লিকেশনটি প্রত্যাখাত হবে।
তেজাস কে

45

আইওএস 8+ এ আপনি নিম্নলিখিতগুলি করতে পারেন:

 func buttonClicked(sender:UIButton)
    {
        UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString))
    }

সুইফট 4

    let settingsUrl = URL(string: UIApplicationOpenSettingsURLString)!
    UIApplication.shared.open(settingsUrl)

16
এটি আপনাকে অ্যাপ্লিকেশনের নির্দিষ্ট সেটিংসে নিয়ে যায়, আমি কীভাবে এগুলিকে সাধারণ সেটিংস পৃষ্ঠাতে বা স্বাস্থ্য বিভাগে আরও উন্নত করব?
এসি গ্রিন

2
সুইফ্ট 3 -UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
আভিভ বেন শাবাত

@ অ্যাসগ্রিন আপনি কি স্বাস্থ্য বিভাগে স্থান দিয়েছেন?
সাদ

আপনি কীভাবে কেবল সেটিংস অ্যাপ্লিকেশনটি খুলবেন? এর "হোম পেজ"
ড্যানিয়েল স্প্রিংগার ২

ছাড়া "!" সাইনURL(string: UIApplication.openSettingsURLString).map { UIApplication.shared.open($0, options: [:], completionHandler: nil) }
ওবার

21

@ বিবেকের ইঙ্গিতটি ব্যবহার করে আমি সুইফট 3 এর উপর ভিত্তি করে একটি ইউটিস ক্লাস বিকাশ করি, আশা করি আপনি প্রশংসা করবেন!

import Foundation
import UIKit

public enum PreferenceType: String {

    case about = "General&path=About"
    case accessibility = "General&path=ACCESSIBILITY"
    case airplaneMode = "AIRPLANE_MODE"
    case autolock = "General&path=AUTOLOCK"
    case cellularUsage = "General&path=USAGE/CELLULAR_USAGE"
    case brightness = "Brightness"
    case bluetooth = "Bluetooth"
    case dateAndTime = "General&path=DATE_AND_TIME"
    case facetime = "FACETIME"
    case general = "General"
    case keyboard = "General&path=Keyboard"
    case castle = "CASTLE"
    case storageAndBackup = "CASTLE&path=STORAGE_AND_BACKUP"
    case international = "General&path=INTERNATIONAL"
    case locationServices = "LOCATION_SERVICES"
    case accountSettings = "ACCOUNT_SETTINGS"
    case music = "MUSIC"
    case equalizer = "MUSIC&path=EQ"
    case volumeLimit = "MUSIC&path=VolumeLimit"
    case network = "General&path=Network"
    case nikePlusIPod = "NIKE_PLUS_IPOD"
    case notes = "NOTES"
    case notificationsId = "NOTIFICATIONS_ID"
    case phone = "Phone"
    case photos = "Photos"
    case managedConfigurationList = "General&path=ManagedConfigurationList"
    case reset = "General&path=Reset"
    case ringtone = "Sounds&path=Ringtone"
    case safari = "Safari"
    case assistant = "General&path=Assistant"
    case sounds = "Sounds"
    case softwareUpdateLink = "General&path=SOFTWARE_UPDATE_LINK"
    case store = "STORE"
    case twitter = "TWITTER"
    case facebook = "FACEBOOK"
    case usage = "General&path=USAGE"
    case video = "VIDEO"
    case vpn = "General&path=Network/VPN"
    case wallpaper = "Wallpaper"
    case wifi = "WIFI"
    case tethering = "INTERNET_TETHERING"
    case blocked = "Phone&path=Blocked"
    case doNotDisturb = "DO_NOT_DISTURB"

}

enum PreferenceExplorerError: Error {
    case notFound(String)
}

open class PreferencesExplorer {

    // MARK: - Class properties -

    static private let preferencePath = "App-Prefs:root"

    // MARK: - Class methods -

    static func open(_ preferenceType: PreferenceType) throws {
        let appPath = "\(PreferencesExplorer.preferencePath)=\(preferenceType.rawValue)"
        if let url = URL(string: appPath) {
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(url, options: [:], completionHandler: nil)
            } else {
               UIApplication.shared.openURL(url)
            }
        } else {
            throw PreferenceExplorerError.notFound(appPath)
        }
    }

}

এটি খুব সহায়ক যেহেতু এপিআই'র নিশ্চিতরূপে পরিবর্তন হবে এবং আপনি একবার এবং খুব দ্রুত রিফ্যাক্টর করতে পারেন!


5
এটি আপেল পর্যালোচনা মাধ্যমে যেতে হবে?
এল_সোনিক

আমি এটিকে আরও ভাল করার জন্য আরও একটি জিনিস যুক্ত করতে যাচ্ছি। এনামে, আপনি urlString নামের সাথে স্ট্রিংয়ের একটি পরিবর্তনশীল করতে পারেন। তারপরে "অ্যাপ-প্রিফেস: রুট =" = স্ব.আরভ্যালু ফিরে আসুন। এটি মূলত অ্যাপপথ এবং স্ট্যাটিক প্রাইভেট লেটের প্রয়োজনীয়তা সরিয়ে ফেলবে। চিয়ার্স।
mn1

আইওএস ১১
মেটিন আতলে

2
এটি অ্যাপ্লিকেশন থেকে এই বার্তাটি পেলাম তাই এটি কাজ করবে না: "আপনার অ্যাপ্লিকেশনটি" প্রিফেস: রুট = "অ-সর্বজনীন ইউআরএল স্কিম ব্যবহার করে যা একটি ব্যক্তিগত সত্তা App অ্যাপ স্টোরটিতে নন-পাবলিক এপিআইয়ের ব্যবহার অনুমোদিত নয় কারণ এই এপিআইগুলি পরিবর্তিত হলে এটি কোনও দুর্বল ব্যবহারকারীর অভিজ্ঞতা অর্জন করতে পারে future ভবিষ্যতে এই অ্যাপ্লিকেশন জমা দেওয়ার জন্য অ-সর্বজনীন এপিআইগুলি ব্যবহার বা গোপন করা আপনার অ্যাপল বিকাশকারী অ্যাকাউন্টটি সমাপ্ত করার পাশাপাশি অ্যাপ থেকে সমস্ত সম্পর্কিত অ্যাপ্লিকেশন সরিয়ে ফেলতে পারে সংরক্ষণ করুন। "
CodeOverRide

1
@ এল_সোনিক এটি কোনও পর্যালোচনা পাস করবে না, এবং যদি এটি হয় তবে এটি ভবিষ্যতের যে কোনও আপডেটে আপনি ধাক্কা দিয়ে এলোমেলোভাবে পতাকাঙ্কিত হতে পারে
আরপি কারসন

16

অ্যাপ্লিকেশন-নির্দিষ্ট ইউআরএল স্কিমগুলির প্রথম প্রতিক্রিয়া আইওএস 10.3 এ আমার জন্য কাজ করেছে।

if let appSettings = URL(string: UIApplicationOpenSettingsURLString + Bundle.main.bundleIdentifier!) {
    if UIApplication.shared.canOpenURL(appSettings) {
      UIApplication.shared.open(appSettings)
    }
  }

এটি কি খোলার কথা?
ড্যানিয়েল স্প্রিংগার


7

আইওএস 10 / এক্সকোড 8 সিমুলেটারে:

UIApplication.shared.openURL(URL(string:UIApplicationOpenSettingsURLString)!)

কাজ

UIApplication.shared.openURL(URL(string:"prefs:root=General")!)

না.


NSআইওএস 10-এ কি উপসর্গটি মুছে ফেলা হয়েছে?
জে.সি. রোকামন্ডে

2
এটি কেবল তখনই কাজ করবে যদি আপনার অ্যাপ্লিকেশনটিতে .bundle ফাইল (আপনার অ্যাপ্লিকেশন পছন্দগুলি) থাকে
সোফি সুইচজ

@ সোফি সুইচ HOw আমি কি .bundle ফাইল যুক্ত করতে পারি?
বিকাশকারী

1
@ ডেভেলপার github.com/phynet/SettingBundleiOSProject এছাড়াও, আপনার অ্যাপ্লিকেশন সেটিংস হ'ল যে অ্যাপ্লিকেশনগুলি সেগুলি ব্যবহার করতে দেয় যা আপনার অ্যাপ্লিকেশন ব্যবহার করতে দেয় এবং সাধারণ -> আপনার অ্যাপ্লিকেশানের সেটিংসে প্রদর্শিত হয়
সোফি সুইজ

7

আমি কোড এই লাইন দেখেছি

UIApplication.sharedApplication() .openURL(NSURL(string:"prefs:root=General")!)

কাজ করছে না, এটি আইওএস 10 / এক্সকোড 8 এ আমার পক্ষে কাজ করে নি, কেবল একটি ছোট কোডের পার্থক্য, দয়া করে এটির সাথে প্রতিস্থাপন করুন

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=General")!)

Swift3

UIApplication.shared.openURL(URL(string:"prefs:root=General")!)

প্রতিস্থাপন

UIApplication.shared.openURL(URL(string:"App-Prefs:root=General")!)

আশা করি এটা সাহায্য করবে. চিয়ার্স।


1
কারণগুলি: অ্যাপ্লিকেশন প্রত্যাখ্যান করা হয়েছে
এরগুনোককাক

7

সতর্কতার শব্দ: prefs:rootবা App-Prefs:rootইউআরএল স্কিমগুলি ব্যক্তিগত এপিআই হিসাবে বিবেচিত হয়। অ্যাপল আপনার অ্যাপ্লিকেশনটি প্রত্যাখ্যান করতে পারে আপনি যদি সেগুলি ব্যবহার করেন তবে আপনার অ্যাপ্লিকেশন জমা দেওয়ার সময় আপনি যা পেতে পারেন তা এখানে রয়েছে:

আপনার অ্যাপ্লিকেশনটি "প্রিফেস: রুট =" অ-সর্বজনীন ইউআরএল স্কিম ব্যবহার করে যা একটি ব্যক্তিগত সত্ত্বা। অ্যাপ স্টোরটিতে নন-পাবলিক এপিআই ব্যবহারের অনুমতি নেই কারণ এই এপিআইগুলি পরিবর্তিত হলে এটি কোনও দুর্বল ব্যবহারকারীর অভিজ্ঞতা অর্জন করতে পারে। ভবিষ্যতে এই অ্যাপ্লিকেশন জমা দেওয়ার জন্য অ-সর্বজনীন এপিআইগুলি ব্যবহার বা গোপন করা চালিয়ে যাওয়ার ফলে আপনার অ্যাপল বিকাশকারী অ্যাকাউন্টটি সমাপ্ত হওয়ার পাশাপাশি অ্যাপ স্টোর থেকে সম্পর্কিত সমস্ত অ্যাপ্লিকেশন অপসারণ হতে পারে।

পরবর্তী পদক্ষেপ

এই সমস্যাটি সমাধান করার জন্য, দয়া করে পাবলিক এপিআই ব্যবহার করে সম্পর্কিত কার্যকারিতা সরবরাহ করতে আপনার অ্যাপ্লিকেশনটি সংশোধন করুন বা "প্রেফস: রুট" বা "অ্যাপ-প্রিফেস: রুট" ইউআরএল স্কিম ব্যবহার করে কার্যকারিতা সরিয়ে দিন।

আপনার অ্যাপ্লিকেশনটির প্রয়োজনীয় কার্যকারিতা সরবরাহের জন্য যদি বিকল্প না থাকে তবে আপনি একটি বর্ধিতকরণের জন্য আবেদন করতে পারেন।


Wi-Fi / ভাষা / অবস্থান 'পৃষ্ঠা' তে সেটিংস খোলার কোনও সমর্থিত উপায় নেই। এটি আইওএস 9 এ কাজ করেছে এমন একটি বাগ যা আইওএস 10-এ স্থির করা হয়েছে more আরও তথ্যের জন্য দয়া করে ফোরামগুলি
মোহিত কুমার

6

সুইফট 4.2, আইওএস 12

open(url:options:completionHandler:)পদ্ধতি অন্তর্ভুক্ত করা একটি অ-শূন্য অপশন অভিধান, যা এই পোস্টের হিসাবে শুধুমাত্র ধরনের একটি সম্ভাব্য বিকল্প রয়েছে আপডেট করা হয়েছে UIApplication.OpenExternalURLOptionsKey(উদাহরণস্বরূপ মধ্যে)।

@objc func openAppSpecificSettings() {

    guard let url = URL(string: UIApplication.openSettingsURLString),
        UIApplication.shared.canOpenURL(url) else {
            return
    }

    let optionsKeyDictionary = [UIApplication.OpenExternalURLOptionsKey(rawValue: "universalLinksOnly"): NSNumber(value: true)]

    UIApplication.shared.open(url, options: optionsKeyDictionary, completionHandler: nil)

}

"অ্যাপ-প্রিফেস" এর মতো স্পষ্টরূপে একটি ইউআরএল তৈরি করা, এএফআইএকে দোকান থেকে কিছু অ্যাপস প্রত্যাখ্যান করেছে।


আমি এটি নিশ্চিত করি, অ্যাপ্লিকেশনটি "অ্যাপ-প্রিফেস" এর আগে ঠিক ছিল, তবে অ্যাপলের বিশেষ ইভেন্টের পরে আমার আপডেট প্রত্যাখ্যান হয়ে যায়, ইউআইএপ্লিকেশন ওপেনসেটিংস URL স্ট্রিংয়ে ফিরে আসে।
ভাইটালাই

5

@ লুকা দাভানজোতে যোগ করা হচ্ছে

আইওএস 11, কিছু অনুমতি সেটিংস অ্যাপ্লিকেশন পথে চলে গেছে:

আইওএস 11 সমর্থন

 static func open(_ preferenceType: PreferenceType) throws {
    var preferencePath: String
    if #available(iOS 11.0, *), preferenceType == .video || preferenceType == .locationServices || preferenceType == .photos {
        preferencePath = UIApplicationOpenSettingsURLString
    } else {
        preferencePath = "\(PreferencesExplorer.preferencePath)=\(preferenceType.rawValue)"
    }

    if let url = URL(string: preferencePath) {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(url)
        }
    } else {
        throw PreferenceExplorerError.notFound(preferencePath)
    }
}

2
এটি অ্যাপল পর্যালোচনা মাধ্যমে যেতে পারেন? মানে, এটি কি অ্যাপ্লিকেশন প্রত্যাখ্যান করে?
আকাশ

4
যখন আমি এই কোডটি চালাই, আমি কেবল আমাকে সেটিংস পৃষ্ঠায় নিয়ে যাই। এটিতে নির্দিষ্ট সেটিংস ট্যাব নয়।
আকাশ

2

সুইফট 4

এটি যদি আপনি খুঁজছেন তবে এটি আপনার অ্যাপের নির্দিষ্ট সেটিংস নিতে পারে take

UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)

ধন্যবাদ ... আমার এটি কাজ করছে ... তবে আমি অন্যান্য বিকাশকারীদের দ্বারা অ্যাপ্লিকেশনগুলিতে সেটিংস পরিবর্তন করতে চাই। উদাহরণস্বরূপ, একটি বোতাম টিপুন এবং ফেসবুকের পুশ বিজ্ঞপ্তি সেটিংস পরিবর্তন করুন যাতে তারা সভার সময় বার্তা না দেয়। আমি পূর্বাভাস দিচ্ছি যে কোনও এমডিএম সমাধান হতে পারে ... না।
আইরিশগ্রিংগো

@ আইরিশগ্রিংগো ফেসবুক অ্যাপ্লিকেশনটির সেটিংস পরিবর্তন করার একমাত্র উপায় হ'ল সাধারণ সেটিংস >> বিজ্ঞপ্তি >> ফেসবুক
বেনি দ্য নেয়ার্ড

0

উপরে যেমন @ নীরভদেসাই অ্যাপ-প্রিফেস বলেছিলেন। আমি দেখতে পেয়েছি যে App-Prefs:পরীক্ষিত আইওএস 9, 10 এবং 11 ডিভাইসের জন্য কাজ করে। যেখানে prefs:কেবল আইওএস 9 এ কাজ করে।

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