programing

다른 앱에서 설정 앱 열기

bestprogram 2023. 4. 22. 11:00

다른 앱에서 설정 앱 열기

네, 여러 가지 의문점이 있다는 건 알지만 모두 옛날 이야기예요.

그래서 저는 맵앱이 해주기 때문에 가능하다고 알고 있습니다.

지도 앱에서 이 앱의 현지화를 끄면 메시지가 표시되고, OK를 누르면 "설정 앱"이 열립니다.그리고 제 질문은, 어떻게 이것이 가능한가?내 앱에서 '설정 앱'을 열려면 어떻게 해야 하나요?

기본적으로 같은 작업을 해야 하는데, 사용자가 내 앱의 위치를 끄면 "Setting app"을 여는 메시지를 표시합니다.

Karan Dua가 언급한 바와 같이 iOS8에서는 다음을 사용하여 이것이 가능합니다.UIApplicationOpenSettingsURLStringApple의 문서를 참조해 주세요.

예:

스위프트 4.2

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

Swift 3의 경우:

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

Swift 2의 경우:

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

목표-C에서

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

iOS 8 이전 버전:

안 돼요.당신이 말한 것처럼, 위치 서비스를 켜달라는 팝업은 앱이 아니라 애플이 제공하는 것입니다.그렇기 때문에 설정 어플리케이션을 열 수 있습니다.

다음은 관련된 질문과 기사입니다.

openURL로 설정 앱을 열 수 있나요?

프로그램 방식으로 설정 앱(iPhone) 열기

사용자가 버튼을 눌렀을 때 설정 앱을 열려면 어떻게 해야 합니까?

iPhone: 응용 프로그램에서 응용 프로그램 기본 설정 패널 열기

앱 기본 설정에서 항목을 클릭하여 UIPicker View를 엽니다. - 방법?

설정 앱을 열까요?

iOS: 잘못된 설정을 하고 있습니다.

@Yatheshaless답변에서:

iOS8에서는 설정 앱을 프로그래밍 방식으로 열 수 있지만 이전 버전의 iOS에서는 열 수 없습니다.

신속:

   UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

Swift 4:

if let url = NSURL(string: UIApplicationOpenSettingsURLString) as URL? {
    UIApplication.shared.openURL(url)
}

Swift 4.2(베타):

if let url = NSURL(string: UIApplication.openSettingsURLString) as URL? {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

목표-C:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

YES!! Device Settings 화면을 시작할 수 있습니다. iOS 9.2에서 테스트했습니다.

1단계. URL 스킴을 추가해야 합니다.

프로젝트 설정 --> 정보 --> URL 유형 --> 새 URL 스킴 추가

여기에 이미지 설명 입력

스텝 2. @davidcann을 사용하여 프로그래밍 방식으로 설정 실행

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

또한 음악, 위치 등의 서브스크린도 적절한 이름을 사용하여 실행할 수 있습니다.

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

앙리 노맥이 공유한 풀네임 리스트를 봐주세요.


업데이트:

코멘트에 의하면, 이 신청서의 송신 상황을 변경한 후의 상황을 알고 싶다고 합니다.

★★★★★★★★★★★★★★★★★.YES!! I got successful update submission and application is available on store without any complain.

확인을 위해 오늘 아침에 다운로드하여 위치 서비스를 비활성화한 후 앱을 실행하면 위치 허가를 요청하고 경보 팝업이 나타나 설정 -> 위치 서비스 페이지 --> 활성화 --> 바로 그거야!

![알림: 앱이 거부될 수 있습니다...승인된 경우에도 이 방법을 사용하면 향후 버전에서 거부될 수 있습니다.]4

하면 될 것요.prefs:<area>설정을 열고 특정 영역으로 이동하기 위한 URL.Apple이 이러한 항목을 변경하여 앱을 손상시킬 수 있으므로 항상 먼저 열 수 있는지 확인하십시오.

기사에서는 iOS 13.1 용 몇 가지를 소개하고 있습니다.

설정 URL

아이클라우드

  • iCloud:prefs:root=CASTLE
  • 백업: iCloud »:prefs:root=CASTLE&path=BACKUP

무선 무선

  • ★★★★★★★★★★★★★★★★★★★:prefs:root=WIFI
  • bluetooth스스 bluetooth:prefs:root=Bluetooth
  • ★★★★★★★★★★★★★★★★★:prefs:root=MOBILE_DATA_SETTINGS_ID

퍼스널 핫스팟

  • 핫스팟: ★★★★★★★★★★★★★★★★★★★:prefs:root=INTERNET_TETHERING
  • 핫스팟 공유:prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • 핫스팟 © 비밀번호 : personal인- 、 Wi-Fi 비비 :prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

  • VPN:prefs:root=General&path=VPN

통지

  • 지::prefs:root=NOTIFICATIONS_ID
  • Siri : 림 、 Siri 、 not :prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

소리.

  • 사드::prefs:root=Sounds
  • : 소리 ring :prefs:root=Sounds&path=Ringtone

방해 안 함

  • [ : ]:prefs:root=DO_NOT_DISTURB
  • Disturb " From : [ Do Not Disturb ][ Allow Calls From ] :prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

스크린 타임

  • : ★★★★★★★★★★★★★★★★★★★★★prefs:root=SCREEN_TIME
  • 타임 : [ Downtime ] :prefs:root=SCREEN_TIME&path=DOWNTIME
  • 시간 제한: 영영간 screen screen screen screen :prefs:root=SCREEN_TIME&path=APP_LIMITS
  • [ Time ]: [ Always Allowed ] : [ Allowed ]:prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

일반

  • 반::prefs:root=General
  • :개요 :prefs:root=General&path=About
  • ™ Software :소프트웨어 업데이트:prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • General © : general반반 general general general general general general :prefs:root=General&path=CARPLAY
  • General ©Refresh : 일반 general general general general general general general general general general general general general general general 。prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • ★★★★★★★★★(iPad) :prefs:root=General&path=MULTITASKING
  • General © & :prefs:root=General&path=DATE_AND_TIME
  • 키보드 : 반반§ general general general :prefs:root=General&path=Keyboard
  • keyboards키보드 : 반키보드 보키보드 :prefs:root=General&path=Keyboard/KEYBOARDS
  • 하드웨어 키보드 하드웨어:prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • General (일반 치환 (텍스트):prefs:root=General&path=Keyboard/USER_DICTIONARY
  • 원핸드 키보드 키보드:prefs:root=General&path=Keyboard/ReachableKeyboard
  • Language & Region : 및 :prefs:root=General&path=INTERNATIONAL
  • : 사전 :prefs:root=General&path=DICTIONARY
  • prefs:root=General&path=ManagedConfigurationList
  • " " " 리셋: "prefs:root=General&path=Reset

컨트롤 센터

  • Center : 어어 control control :prefs:root=ControlCenter
  • Center Controls : Control Center » control control :prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

표시

  • ★★★★prefs:root=DISPLAY
  • Lock : ](자동 잠금) [Auto])를 표시합니다.prefs:root=DISPLAY&path=AUTOLOCK
  • " " " " " " :prefs:root=DISPLAY&path=TEXT_SIZE

접근성

  • 근::prefs:root=ACCESSIBILITY

배경화면

  • 지::prefs:root=Wallpaper

시리

  • 리::prefs:root=SIRI

애플 펜슬

  • Apple 슬( ( iPad ) : ) :prefs:root=Pencil

페이스 아이디

  • ID: 굴 id ID:prefs:root=PASSCODE

긴급 SOS

  • SOS: ★★ SOS:prefs:root=EMERGENCY_SOS

배터리

  • ★★★★★★:prefs:root=BATTERY_USAGE
  • (iPhone) : prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

사생활

  • ★★★★★★★★★★★★★★★★:prefs:root=Privacy
  • ® Services : " " © " " privacy privacy privacy privacy privacy privacy privacy privacy privacy :prefs:root=Privacy&path=LOCATION
  • prefs:root=Privacy&path=CONTACTS
  • Calendars : 라 privacy privacy privacy privacy privacy privacy privacy privacy privacy :prefs:root=Privacy&path=CALENDARS
  • prefs:root=Privacy&path=REMINDERS
  • Photos : 라라버 privacy privacy privacy privacy privacy :prefs:root=Privacy&path=PHOTOS
  • Privacy: 프버 © privacy :prefs:root=Privacy&path=MICROPHONE
  • ® Recognition : (프라이버시) 음성 인식 : (영어) © ()prefs:root=Privacy&path=SPEECH_RECOGNITION
  • Privacy " 라버 privacy privacy privacy privacy privacy privacy privacy "prefs:root=Privacy&path=CAMERA
  • Motion : :prefs:root=Privacy&path=MOTION\

앱스토어

  • ★★★★★★★★★★★★★★★★★:prefs:root=STORE
  • 앱 다운로드: 스어 app app운운운운운운운운운운운운운운:prefs:root=STORE&path=App%20Downloads
  • 자동재생:prefs:root=STORE&path=Video%20Autoplay

지갑

  • : 갑: :prefs:root=PASSBOOK

비밀번호 및 계정

  • 및 " " " " " :prefs:root=ACCOUNTS_AND_PASSWORDS
  • & Accounts " Data : " " " " " " " " " " " 。prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • & Accounts ] [ Add Account ]:prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

메일

  • 일::prefs:root=MAIL
  • ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★:prefs:root=MAIL&path=Preview
  • 메일 » 스와이프 옵션:prefs:root=MAIL&path=Swipe%20Options
  • 메일 » 알림:prefs:root=MAIL&path=NOTIFICATIONS
  • 메일 » 차단됨:prefs:root=MAIL&path=Blocked
  • 메일 m 뮤트 스레드 액션:prefs:root=MAIL&path=Muted%20Thread%20Action
  • 메일 blocked 차단된 발신인 옵션:prefs:root=MAIL&path=Blocked%20Sender%20Options
  • 메일 » 주소 표시:prefs:root=MAIL&path=Mark%20Addresses
  • 메일 » 견적 수준 증가:prefs:root=MAIL&path=Increase%20Quote%20Level
  • 메일 § 회신 첨부 파일 포함:prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • 메일 » 서명:prefs:root=MAIL&path=Signature
  • 메일 » 기본 계정:prefs:root=MAIL&path=Default%20Account

연락처

  • 연락처:prefs:root=CONTACTS

캘린더

  • 캘린더:prefs:root=CALENDAR
  • 캘린더 » 대체 캘린더:prefs:root=CALENDAR&path=Alternate%20Calendars
  • 캘린더 » 동기화:prefs:root=CALENDAR&path=Sync
  • 캘린더 » 기본 경보 시간:prefs:root=CALENDAR&path=Default%20Alert%20Times
  • Calendar 、 Calendar : 린 calendar calendar calendar calendar calendar:: 。prefs:root=CALENDAR&path=Default%20Calendar

메모들

  • ★★★★★★★prefs:root=NOTES
  • 」 어카운트: 「 」prefs:root=NOTES&path=Default%20Account
  • 비밀번호:prefs:root=NOTES&path=Password
  • 기준: 참참§ notes notes notes notes notes notes notes notes notes:prefs:root=NOTES&path=Sort%20Notes%20By
  • 새 고음음음음음음음음음음음음음음음 notes notes notes notes notes notes:prefs:root=NOTES&path=New%20Notes%20Start%20With
  • [ Items ] : 의의 、 [ Sort Checked Items ]:prefs:root=NOTES&path=Sort%20Checked%20Items
  • 회선 및 prefs:root=NOTES&path=Lines%20%26%20Grids
  • 화면에서 :prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

주의사항

  • : prefs:root=REMINDERS
  • " " " " " 。prefs:root=REMINDERS&path=DEFAULT_LIST

음성 메모

  • 성성 voice voice:prefs:root=VOICE_MEMOS

전화

  • ★★★★★★prefs:root=Phone

메시지

  • ★★★★★★★prefs:root=MESSAGES

페이스 타임

  • Time : 이이 face face :prefs:root=FACETIME

지도

  • ★★★★prefs:root=MAPS
  • (Driving & Navigation) : "Driving & Navigation" (드라이빙 & ) :prefs:root=MAPS&path=Driving%20%26%20Navigation
  • Transit : 도도 maps maps maps maps maps :prefs:root=MAPS&path=Transit

나침반

  • 나침반:prefs:root=COMPASS

재다

  • 정::prefs:root=MEASURE

사파리

  • ★★★★★★★★★★★prefs:root=SAFARI
  • Safari Safari © 콘 safari :prefs:root=SAFARI&path=Content%20Blockers
  • Downloads : Safari :prefs:root=SAFARI&path=DOWNLOADS
  • 탭 Safari 탭 :prefs:root=SAFARI&path=Close%20Tabs
  • Safari © Data : Safari © Safari の safari safari safari safari safari safari safari safari safari safari :prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • : Safari 페이지 줌:prefs:root=SAFARI&path=Page%20Zoom
  • Safari © 데 safari safari safari safari safari safari :prefs:root=SAFARI&path=Request%20Desktop%20Website
  • » Safari © 리:: :prefs:root=SAFARI&path=Reader
  • : Safari © 카카: :prefs:root=SAFARI&path=Camera
  • Safari Safari © : :prefs:root=SAFARI&path=Microphone
  • : Safari © 위: :prefs:root=SAFARI&path=Location
  • : Safari © : safari :prefs:root=SAFARI&path=ADVANCED

뉴스

  • ★★★★★★prefs:root=NEWS

헬스

  • ★★★★★★★★★★★★★★★★*prefs:root=HEALTH

숏컷

  • " " " 。prefs:root=SHORTCUTS

음악

  • 악::prefs:root=MUSIC
  • ® 셀룰러 : 악악 music music music music music music music music music music :prefs:root=MUSIC&path=com.apple.Music:CellularData
  • " " " " " " :prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • EQ : music EQ:prefs:root=MUSIC&path=com.apple.Music:EQ
  • 제한 :볼륨 제한 :prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

TV

  • TV : 정 、 TV :prefs:root=TVAPP

사진들

  • : ★★★★★prefs:root=Photos

카메라

  • 메라::prefs:root=CAMERA
  • [ Video ] : [ Record Video ] :prefs:root=CAMERA&path=Record%20Video
  • ® 레코드 : camera메 camera camera camera camera camera camera camera camera camera camera camera camera camera :prefs:root=CAMERA&path=Record%20Slo-mo

책들

  • : ★★★★★★★★★★★★★★prefs:root=IBOOKS

게임 센터

  • 센터: ★★★★★★★★★★★★★★★★★★★★:prefs:root=GAMECENTER

iOS 5.0 이상에서 사용할 수 있습니다. 더 이상 작동하지 않습니다.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

iOS 10 업데이트

애플은 메인 스레드에서 비동기식으로 메서드를 변경했습니다.그러나 앞으로는 앱 설정을 네이티브 설정으로만 열 수 있습니다.

[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];

iOS 9 업데이트

이제 하위 설정 메뉴로 직접 이동할 수 있습니다.단, URL 스킴을 작성해야 합니다.다음 두 가지 방법으로 수행할 수 있습니다.

  1. XCode - 대상, 정보, URL 스킴에 있습니다.그런 다음 prefs를 입력합니다.
  2. *-Info.plist 입니다.다음을 추가합니다.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

그 후 코드:

재빠르다

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

목적-c

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

Swift 3/iOS 10+에서는 다음과 같이 표시됩니다.

if let url = URL(string: "App-Prefs:root=LOCATION_SERVICES") {
    UIApplication.shared.open(url, completionHandler: .none)
}

Swift 3에서 필요한 것은 이것뿐입니다(예를 들어 앱 알림으로 리다이렉트 합니다).

if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=your app bundleID") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, completionHandler: .none)
    } else {
        // Fallback on earlier versions
    }
}

출처 : phynet gist.

이것은 설정이 백그라운드로 되어 있을 때만 기능했습니다.앱 알림 설정으로 리디렉션되지만 설정이 백그라운드에서 실행되고 있지 않은 경우에는 일반적으로 알림 설정으로 리디렉션됩니다.

스위프트 3:

guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
if #available(iOS 10.0, *) {
  UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
  // Fallback on earlier versions
  UIApplication.shared.openURL(url)
}

UIApplicationOpenSettingsURLString이전에 모든 권한을 허용한 경우에만 작동합니다.예를 들어 위치, 사진, 연락처, 푸시 알림 액세스입니다.따라서 사용자로부터 해당 권한이 없는 경우:

iOS 10 이상일 경우

[설정(Settings)]가 열렸지만 크래시됩니다.이유는 앱 설정에 아무것도 없기 때문입니다.

아래 코드는 iOS Setting(iOS 설정) 내에서 응용 프로그램 설정을 엽니다.

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

디바이스를 사용할 수 없기 때문에 iOS < 10에서는 확인할 수 없었습니다.

또한 아래 코드는 GIST에서 찾을 수 있었고 iOS10에서도 정상적으로 동작합니다.하지만 이것이 애플 리뷰 팀에 의해 승인될지는 잘 모르겠습니다.

https://gist.github.com/johnny77221/bcaa5384a242b64bfd0b8a715f48e69f

아래의 코드를 사용해 주세요.

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

~로openURL(_:)0 이후 되지 않습니다. 10.0 을 사용합니다.open(_:options:completionHandler:)★★★★★★ 。

if let settingsUrl = URL(string: UIApplication.openSettingsURLString)  {
        UIApplication.shared.open(settingsUrl, options: [:]) { completed in
             if !completed {
                 print("Failed opening")
             }
        }
}

iOS 10에서 테스트 완료.일해

NSArray* urlStrings = @[@"prefs:root=WIFI", @"App-Prefs:root=WIFI"];
for(NSString* urlString in urlStrings){
NSURL* url = [NSURL URLWithString:urlString];
if([[UIApplication sharedApplication] canOpenURL:url]){
    [[UIApplication sharedApplication] openURL:url];
    break;
}
}

해피 코딩 :)

SWIFT 4.0

'openURL'은 iOS 10.0에서 더 이상 사용되지 않습니다. 대신 openURL:options:completionHandler:를 사용하십시오.

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

스위프트 4

저는 안전한 방법으로 열린 환경을 선호합니다.

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

    UIApplication.shared.open(settingUrl)
}
else {
    print("Setting URL invalid")
}

Swift Bluetooth 페이지에서 설정 앱을 열 수 있습니다.

func openSettingsApp(){
    if let settings = NSURL(string: "prefs:root=Bluetooth") {
        UIApplication.sharedApplication().openURL(settings)
    }
}

다시 말하지만 앱의 설정이 열리지 않습니다.이것은 블루투스와 깊은 연계가 되어 있기 때문에 블루투스로 설정 앱을 열 수 있습니다.

승인된 답변에 추가하려면: (Apple 개발자 설명서에서) "이 문자열에서 작성된 URL을 열 때(openSettings)"URLtring)을 통해 설정 앱이 실행되고 앱의 사용자 지정 설정이 있는 경우 표시됩니다.따라서 앱에 대한 설정을 열려면 사용자 고유의 설정을 만드십시오.묶다

이것을 당신의 클래스에 추가하세요.

 public class func showSettingsAlert(title:String,message:String,onVC viewController:UIViewController,onCancel:(()->())?){
            YourClass.show2ButtonsAlert(onVC: viewController, title: title, message: message, button1Title: "Settings", button2Title: "Cancel", onButton1Click: {
                if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString){
                    UIApplication.sharedApplication().openURL(settingsURL)
                }
                }, onButton2Click: {
                    onCancel?()
            })
        }

 public class func show2ButtonsAlert(onVC viewController:UIViewController,title:String,message:String,button1Title:String,button2Title:String,onButton1Click:(()->())?,onButton2Click:(()->())?){
            dispatch_async(dispatch_get_main_queue()) {
                let alert : UIAlertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)

                alert.addAction(UIAlertAction(title: button1Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton1Click?()
                }))

                alert.addAction(UIAlertAction(title: button2Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton2Click?()
                }))

                viewController.presentViewController(alert, animated: true, completion: nil)
            }
        }

이렇게 부르면

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})

언급URL : https://stackoverflow.com/questions/5655674/opening-the-settings-app-from-another-app