다른 앱에서 설정 앱 열기


180

좋아, 나는 그것에 대해 많은 질문이 있다는 것을 알고 있지만, 그것들은 많은 시간 전에 있었다.

그래서. Map 앱이 가능하기 때문에 가능하다는 것을 알고 있습니다.

지도 앱에서이 앱의 현지화를 끄면 메시지가 표시되고 확인을 누르면 "Settings App"이 열립니다. 그리고 내 질문은, 이것이 어떻게 가능합니까? 내 앱에서 "앱 설정"을 열려면 어떻게해야합니까?

사용자가 내 앱의 위치를 ​​끄면 기본적으로 동일한 작업을 수행해야합니다. 그러면 "앱 설정"을 열 수있는 메시지가 표시됩니다.


이 하나를 확인하십시오 stackoverflow.com/questions/377102/…
Yatheesha BL

1
iOS8에서 프로그래밍 방식으로 설정 앱을 열 수 있습니다 (그러나 iOS의 하위 버전은 아님).
Karan Dua

답변:


291

에서 언급 한 바와 같이 카란 두아 이다 iOS8의 지금 가능한 사용 UIApplicationOpenSettingsURLString을 참조 애플의 문서 .

예:

스위프트 4.2

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

스위프트 3에서 :

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

스위프트 2에서 :

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

Objective-C에서

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

iOS 8 이전 :

당신은 할 수 없습니다. 당신이 말했듯이 이것은 여러 번 다루었 고 위치 서비스를 켜도록 요청하는 팝업은 앱 자체가 아닌 Apple에서 제공합니다. 이것이 설정 애플리케이션을 열 수있는 이유입니다.

다음은 몇 가지 관련 질문 및 기사입니다.

URL을 사용하여 설정 앱을 열 수 있습니까?

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

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

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

앱의 환경 설정에서 항목을 클릭하여 UIPickerView를 엽니 다. 방법?

설정 앱을여시겠습니까?

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


좀 더 권위있는 대답을해야하는 경우 <애플 개발자 포럼에 물어보십시오 수 developer.apple.com/devforums > 또는 <에 버그를 신고 developer.apple.com/bugreporter > -이 알려진 문제가 있다면 그것을 다시 와야한다 "정확하게 동작"또는 원래 버그의 복제본
Vincent Gable


2
이것은 이제 [NSURL URLWithString : UIApplicationOpenSettingsURLString]을 사용하여 iOS 8에서 가능합니다
LightningStryk

1
swift 3-UIApplication.shared.openURL (URL (string : UIApplicationOpenSettingsURLString)!)
GMHSJ

1
이 방법을 사용하는 것에주의하십시오. 나는 그것을 사용하고 몇 개월 후 애플의 다음 메시지와 함께 내 앱이 거부되었습니다. 귀하의 앱은 "prefs : root ="비공개 URL 체계를 사용합니다. 비공개 API는 App Store에서 허용되지 않습니다. API가 변경되면 사용자 경험이 저하 될 수 있기 때문입니다. 이후에이 앱을 제출할 때 비공개 API를 계속 사용하거나 숨기면 Apple Developer 계정이 종료되고 App Store에서 모든 관련 앱이 제거 될 수 있습니다.
Nick Kirsten

133

에서 @Yatheeshaless대답 :

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

빠른:

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

스위프트 4 :

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

스위프트 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]];

23
설정 앱의 앱 섹션이 열린 것 같습니다. 사용자는 설정의 기본 화면을 보려면 뒤로 몇 번 누르십시오.
wjl

1
작은 수정 ..[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Paito

10
@Paito 위의 행은 앱 개인 설정으로 연결 됩니다. 장치 설정의 개인 정보 섹션 으로 이동하는 방법이 있습니까? 알고 있으면 의견을 말하십시오. 이 리디렉션은 개인 정보 섹션의 위치 설정으로 이동하는지도 앱에서 발견되었으므로 가능합니다.
Pavan Kotesh

1
작은 스위프트 수정 : UIApplication.sharedApplication (). openURL (NSURL (string : UIApplicationOpenSettingsURLString)!)
vbezhenar

1
@ PavanKotesh- 예. 그러나 앱 설정에는 권한이 필요한 것이 있습니다. 제 경우에는 위의 코드로 앱 설정에 나타나는 연락처에 액세스해야했습니다.
Tejas K

58

예!! iOS 9.2에서 테스트 한 장치 설정 화면을 시작할 수 있습니다.

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

프로젝트 설정-> 정보-> URL 유형-> 새 URL 구성표 추가로 이동하십시오.

여기에 이미지 설명을 입력하십시오

2 단계. @davidcann 덕분에 프로그래밍 방식으로 설정 시작

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

또한 적절한 이름을 사용하여 음악, 위치 등과 같은 하위 화면을 시작할 수 있습니다

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

이 이름 목록을 참조하십시오 여기에 앙리 Normak 공유를


최신 정보:

의견에 따라 모든 사람이 내 신청서 제출 상태가 변경된 후 어떤 일이 발생하는지 알고 싶어합니까?

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

확인하기 위해 오늘 아침에 방금 다운로드하고 위치 서비스를 비활성화 한 다음 앱을 시작하여 위치 권한을 요청한 다음 설정-> 위치 서비스 페이지-> 사용->에서 알림 팝업이 표시되었습니다. 그게 다야 !!

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


감사합니다 .iOS 6 및 7에서도 작동합니다. 아직 애플의 검토 과정을 거치려고 했습니까?
Flo

1
@Flo 현재 베타 테스트를 진행했기 때문에 알려 드리겠습니다.
swiftBoy

1
iOS 9.3. 매력처럼 일했다. 설정 앱 내부에 "[앱 이름]으로 돌아 가기"도 표시됩니다. 분명히 이런 종류의 일을하는 다른 많은 앱을 볼 수 있기 때문에 이것이 지원됩니다!
EricWasTaken

13
iOS 10에서 새 URL은 "prefs : root = ...."이 아니라 "App-Prefs : root = ..."입니다.
Drico

1
승인 된 경우에도 앱이 거부 될 수 있습니다.이 방법을 사용하면 향후 버전에서 거부 될 수 있습니다.
Mihir Mehta

18

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

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

3
@MarkGranoff 아니요, 기술적으로 문서화되지 않은 것 같지만 URL 체계이기 때문에 일반적인 문서화되지 않은 API만큼 나쁘지는 않습니다. 먼저 canOpenURL로 확인할 수 있습니다. 또한 여기에 스레드가 있습니다 : devforums.apple.com/message/543818
davidcann

3
이 기사 에 따라 설정에서 다른 영역으로 이동할 수 있습니다 . 예를 prefs:root=General&path=Bluetooth
들어이

1
@ "prefs : root = Brightness"URL을 열기 때문에 개인 API 사용이 거부 된 응용 프로그램이 있습니다. 일반적으로, 서류 미비는 개인을 의미합니다.
기 illa

4
애플은 이것이 공개 API가 아니며 더 이상 지원되지 않는다고 밝혔다. 이 문제에 관한 버그는 11253669 번입니다.
Don Wilson

2
방금 Strava 앱에서 작동하는 것을 보았습니다. 블루투스를 껐다가 앱에서 켭니다. 그런 다음 설정 앱으로 이동하라는 메시지가 표시되고 블루투스 설정으로 바로 이동합니다. iOS5.1 용입니다. 그들이 어떤 체계를 사용하고 있는지 알 수있는 방법이 있습니까?
Ants

14

iOS 10 업데이트

Apple은 기본 스레드에서 비동기를 열도록 메소드를 변경했습니다. 그러나 지금부터는 기본 설정에서만 앱 설정을 열 수 있습니다.

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

iOS 9 업데이트

이제 하위 설정 메뉴로 바로 이동할 수 있습니다. 그러나 URL 스킴을 작성해야합니다. 두 가지 방법으로 수행 할 수 있습니다.

  1. XCode-Target, Info, URL Scheme에서 찾을 수 있습니다. 그런 다음 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"]];


1
iOS 10.x 솔루션을 사용해 보았는데 효과가 없었습니다.
Mark Peters

@MarkPeters, 아직 방법을 알아 냈습니까? 큰 도움이 될 수 있습니다. 감사.
Roohul Poolak

아뇨 iOS 버그인지 또는 Apple이 기능을 제거했는지 여전히 알 수 없습니다.
Mark Peters

나는 여전히 확장 프로그램과 함께 작동한다고 생각합니다. Ex 앱이 Magic LauncherAppstore에 있습니다.
Trident

4

Swift 3 / iOS 10+에서는 이제 다음과 같이 보입니다.

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

알림 화면으로 이동하는 방법 url = URL (string : "App-Prefs : root = NOTIFICATIONS_ID & path = io.artup.artup") 인 경우 {if #available (iOS 10.0, *) {UIApplication.shared.open (url, completionHandler : .none)} }하지만 iPhone 7 plus가 아닌 iPhone 6에서 알림을 보았습니다.
user3804063

3
앱이 거부됩니다. 그들은 개인 API를 사용했습니다.
Bersaelor

이 "App-Prefs : root"를 사용하여 내 앱을 거부했습니다.
Malder

1
여기에 언급 된 다른 사람들을 강조 하고이 방법을 사용하지 않으면 앱이 거부됩니다. 이와 같은 앱을 반복해서 제출하면 개발자 계정이 해지됩니다.
CodeBrew

4

스위프트 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)
}

4

prefs:<area>URL을 사용하여 설정을 열고 특정 영역으로 이동할 수있는 것 같습니다 . Apple은이를 변경하고 앱을 중단 할 수 있으므로 항상 열 수 있는지 항상 확인하십시오.

기사에서 그들은 iOS 13.1에 대한 일부를 나열했습니다.

설정 URL

iCloud

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

무선 라디오

  • 와이파이: prefs:root=WIFI
  • 블루투스: prefs:root=Bluetooth
  • 휴대 전화 : prefs:root=MOBILE_DATA_SETTINGS_ID

개인 핫스팟

  • 개인 핫스팟: prefs:root=INTERNET_TETHERING
  • 개인 핫스팟 ⇾ 가족 공유 : prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • 개인 핫스팟 ⇾ Wi-Fi 비밀번호 : prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

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

알림

  • 알림 : prefs:root=NOTIFICATIONS_ID
  • 알림 ⇾ Siri 제안 : prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

소리

  • 소리 : prefs:root=Sounds
  • 벨소리 : prefs:root=Sounds&path=Ringtone

방해하지 마

  • 방해하지 마: prefs:root=DO_NOT_DISTURB
  • 방해 금지 From 다음에서 전화 걸기 : prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

상영 시간

  • 상영 시간: prefs:root=SCREEN_TIME
  • 스크린 타임 ⇾ 가동 중지 시간 : prefs:root=SCREEN_TIME&path=DOWNTIME
  • 화면 시간 ⇾ 앱 제한 : prefs:root=SCREEN_TIME&path=APP_LIMITS
  • 스크린 시간 ⇾ 항상 허용 : prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

일반

  • 일반: prefs:root=General
  • 일반 ⇾ 정보 : prefs:root=General&path=About
  • 일반 ⇾ 소프트웨어 업데이트 : prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • 일반 ⇾ CarPlay : prefs:root=General&path=CARPLAY
  • 일반 ⇾ 백그라운드 앱 새로 고침 : prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • 일반 ⇾ 멀티 태스킹 (iPad 전용) : prefs:root=General&path=MULTITASKING
  • 일반 ⇾ 날짜 및 시간 : prefs:root=General&path=DATE_AND_TIME
  • 일반 ⇾ 키보드 : prefs:root=General&path=Keyboard
  • 일반 ⇾ 키보드 ⇾ 키보드 : prefs:root=General&path=Keyboard/KEYBOARDS
  • 일반 ⇾ 키보드 ⇾ 하드웨어 키보드 : prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • 일반 ⇾ 키보드 ⇾ 텍스트 교체 : prefs:root=General&path=Keyboard/USER_DICTIONARY
  • 일반 ⇾ 키보드 ⇾ 한 손 키보드 : prefs:root=General&path=Keyboard/ReachableKeyboard
  • 일반 ⇾ 언어 및 지역 : prefs:root=General&path=INTERNATIONAL
  • 일반 ⇾ 사전 : prefs:root=General&path=DICTIONARY
  • 일반 ⇾ 프로파일 : prefs:root=General&path=ManagedConfigurationList
  • 일반 ⇾ 재설정 : prefs:root=General&path=Reset

통제실

  • 통제실: prefs:root=ControlCenter
  • 컨트롤 센터 ⇾ 컨트롤 사용자 정의 : prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

디스플레이

  • 디스플레이: prefs:root=DISPLAY
  • 디스플레이 ⇾ 자동 잠금 : prefs:root=DISPLAY&path=AUTOLOCK
  • 디스플레이 ⇾ 텍스트 크기 : prefs:root=DISPLAY&path=TEXT_SIZE

접근성

  • 접근성 : prefs:root=ACCESSIBILITY

벽지

  • 벽지: prefs:root=Wallpaper

시리

  • 시리: prefs:root=SIRI

사과 연필

  • Apple Pencil (iPad 만 해당) : prefs:root=Pencil

얼굴 ID

  • 얼굴 ID : prefs:root=PASSCODE

긴급 SOS

  • 긴급 SOS : prefs:root=EMERGENCY_SOS

배터리

  • 배터리: prefs:root=BATTERY_USAGE
  • 배터리 ⇾ 배터리 상태 (iPhone 만 해당) : prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

은둔

  • 은둔: prefs:root=Privacy
  • 개인 정보 보호 ⇾ 위치 서비스 : prefs:root=Privacy&path=LOCATION
  • 개인 정보 보호 ⇾ 연락처 : prefs:root=Privacy&path=CONTACTS
  • 개인 정보 보호 ⇾ 캘린더 : prefs:root=Privacy&path=CALENDARS
  • 개인 정보 보호 ⇾ 알림 : prefs:root=Privacy&path=REMINDERS
  • 개인 정보 보호 ⇾ 사진 : prefs:root=Privacy&path=PHOTOS
  • 프라이버시 ⇾ 마이크 : prefs:root=Privacy&path=MICROPHONE
  • 개인 정보 보호 ⇾ 음성 인식 : prefs:root=Privacy&path=SPEECH_RECOGNITION
  • 개인 정보 보호 ⇾ 카메라 : prefs:root=Privacy&path=CAMERA
  • 개인 정보 보호 ⇾ 동의 : prefs:root=Privacy&path=MOTION\

앱 스토어

  • 앱 스토어: prefs:root=STORE
  • App Store ⇾ 앱 다운로드 : prefs:root=STORE&path=App%20Downloads
  • App Store ⇾ 비디오 자동 재생 : prefs:root=STORE&path=Video%20Autoplay

지갑

  • 지갑: prefs:root=PASSBOOK

비밀번호 및 계정

  • 비밀번호 및 계정 : prefs:root=ACCOUNTS_AND_PASSWORDS
  • 비밀번호 및 계정 New 새 데이터 가져 오기 : prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • 비밀번호 및 계정 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
  • 메일 ⇾ 뮤트 스레드 동작 : prefs:root=MAIL&path=Muted%20Thread%20Action
  • 메일 Send 차단 된 발신자 옵션 : prefs:root=MAIL&path=Blocked%20Sender%20Options
  • 메일 ⇾ 마크 주소 : prefs:root=MAIL&path=Mark%20Addresses
  • 메일 Quote 견적 수준 증가 : prefs:root=MAIL&path=Increase%20Quote%20Level
  • 메일 Re 회신 첨부 파일 포함 : 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
  • 캘린더 ⇾ 기본 캘린더 : prefs:root=CALENDAR&path=Default%20Calendar

노트

  • 노트: prefs:root=NOTES
  • ⇾ 기본 계정 : prefs:root=NOTES&path=Default%20Account
  • ⇾ 비밀번호 : prefs:root=NOTES&path=Password
  • 노트 ⇾ 정렬 기준 : prefs:root=NOTES&path=Sort%20Notes%20By
  • 메모 ⇾ 새로운 메모로 시작 : prefs:root=NOTES&path=New%20Notes%20Start%20With
  • ⇾ 확인 된 항목 정렬 : prefs:root=NOTES&path=Sort%20Checked%20Items
  • ⇾ 선 및 그리드 : prefs:root=NOTES&path=Lines%20%26%20Grids
  • 메모 Lock 잠금 화면에서 액세스 메모 : prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

알림

  • 알림 : prefs:root=REMINDERS
  • 알림 ⇾ 기본 목록 : prefs:root=REMINDERS&path=DEFAULT_LIST

음성 메모

  • 음성 메모 : prefs:root=VOICE_MEMOS

전화

  • 전화: prefs:root=Phone

메시지

  • 메시지 : prefs:root=MESSAGES

화상 통화

  • 화상 통화: prefs:root=FACETIME

지도

  • 지도 : prefs:root=MAPS
  • 지도 ⇾ 운전 및 내비게이션 : prefs:root=MAPS&path=Driving%20%26%20Navigation
  • 지도 ⇾ 대중 교통 : prefs:root=MAPS&path=Transit

나침반

  • 나침반: prefs:root=COMPASS

법안

  • 법안: prefs:root=MEASURE

원정 여행

  • 원정 여행: prefs:root=SAFARI
  • Safari ⇾ 컨텐츠 차단기 : prefs:root=SAFARI&path=Content%20Blockers
  • Safari ⇾ 다운로드 : prefs:root=SAFARI&path=DOWNLOADS
  • Safari ⇾ 탭 닫기 : prefs:root=SAFARI&path=Close%20Tabs
  • Safari ⇾ 기록 및 데이터 지우기 : prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • Safari ⇾ 페이지 확대 : prefs:root=SAFARI&path=Page%20Zoom
  • Safari Desktop 데스크탑 웹 사이트 요청 : prefs:root=SAFARI&path=Request%20Desktop%20Website
  • Safari ⇾ 리더 : prefs:root=SAFARI&path=Reader
  • 사파리 ⇾ 카메라 : prefs:root=SAFARI&path=Camera
  • 사파리 ⇾ 마이크 : prefs:root=SAFARI&path=Microphone
  • 사파리 ⇾ 위치 : prefs:root=SAFARI&path=Location
  • Safari ⇾ 고급 : prefs:root=SAFARI&path=ADVANCED

뉴스

  • 뉴스: prefs:root=NEWS

건강

  • 건강: prefs:root=HEALTH

바로 가기

  • 바로 가기 : prefs:root=SHORTCUTS

음악

  • 음악: prefs:root=MUSIC
  • 음악 ⇾ 셀룰러 데이터 : prefs:root=MUSIC&path=com.apple.Music:CellularData
  • 음악 Storage 저장 공간 최적화 : prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • 음악 ⇾ EQ : prefs:root=MUSIC&path=com.apple.Music:EQ
  • 음악 ⇾ 음량 제한 : prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

TV

  • 설정 ⇾ TV : prefs:root=TVAPP

사진

  • 사진 : prefs:root=Photos

카메라

  • 카메라: prefs:root=CAMERA
  • 카메라 ⇾ 비디오 녹화 : prefs:root=CAMERA&path=Record%20Video
  • 카메라 ⇾ 녹화 슬로 모 : prefs:root=CAMERA&path=Record%20Slo-mo

서적

  • 서적: prefs:root=IBOOKS

게임 센터

  • 게임 센터: prefs:root=GAMECENTER

3

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

만약 아이폰 OS 10 이상 ,

설정이 열리고 충돌합니다. 그 이유는 앱 설정에 아무것도 없습니다.

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

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

기기를 사용할 수 없기 때문에 iOS <10에서 확인할 수 없습니다.

또한 일부 요지에서 아래 코드를 찾을 수 있으며 iOS 10에서도 잘 작동합니다. 그러나 이것이 Apple 검토 팀의 승인 여부는 확실하지 않습니다.

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


3

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 .

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


1

아래 코드를 사용할 수 있습니다.

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

1

스위프트 4.0

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

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

1

스위프트 4

더 안전한 방식으로 설정을 여는 것을 선호합니다.

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

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

0

스위프트 다음 기능을 사용하여 블루투스 페이지에서 설정 앱을 열 수 있습니다

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

다시 말하지만 앱 설정이 열리지 않습니다. 블루투스에 딥 링크되어 있기 때문에 블루투스로 설정 앱을 열 수 있습니다.


0

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;
}
}

행복한 코딩 :)


3
앱이 거부됩니다. 나에게 일어난 일이야
Bersaelor

그렇습니다. 그러나이 코드는 원하는 위치로 바로 연결됩니다.
Praveen Sharma

1
그렇습니다. 나는 그것이 작동하지 않는다고 말하는 것이 아니라 앱 검토 중에 거부 될 것이라고 지적하고 있습니다. "prefs : root"는 검토 팀이 말한대로 개인 URL 체계입니다. (당신은 운이 좋을 수도 있고 잠시 동안 통지하지 않을 수도 있습니다, 우리는 잠시 동안 기능을 가지고 있었고 리뷰어가 그것을 발견하기 전에 여러 리뷰를 통과했습니다)
Bersaelor

정보 주셔서 감사합니다, 나는 다른 것을 시도하지만 지금 당장은 VPN 연결에 갇혀있어 이것에 대한 해결책을 찾는 중입니다.
Praveen Sharma

0

허용 된 답변에 추가하려면 : (애플 개발자 문서에서) "이 문자열에서 작성된 URL (openSettingsURLString)을 열면 시스템이 설정 앱을 시작하고 앱의 사용자 지정 설정 (있는 경우)을 표시합니다." 따라서 앱 설정을 열려면 고유 한 Settings.bundle을 만드십시오.


-1

이것을 수업에 추가하고

 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")
})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.