├── SettingsAppAccessExample ├── ja.lproj │ ├── LaunchScreen.strings │ └── Main.strings ├── zh-Hans.lproj │ ├── LaunchScreen.strings │ └── Main.strings ├── zh-Hant.lproj │ ├── LaunchScreen.strings │ └── Main.strings ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── AppDelegate.swift └── ViewController.swift ├── README └── URL Types - prefs.png ├── Cocoapod ├── Podfile ├── SettingsAppAccessCocoapodExample.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── SettingsAppAccessCocoapodExample.xcscheme │ └── project.pbxproj ├── Podfile.lock └── SettingsAppAccessCocoapodExample.xcworkspace │ └── contents.xcworkspacedata ├── SettingsAppAccess.xcodeproj ├── project.xcworkspace │ └── contents.xcworkspacedata ├── xcshareddata │ └── xcschemes │ │ ├── SettingsAppAccess.xcscheme │ │ └── SettingsAppAccessExample.xcscheme └── project.pbxproj ├── .gitignore ├── SettingsAppAccess ├── SettingsAppAccess.h ├── Info.plist ├── UIApplication+SettingsAppAccess.swift ├── zh-Hans.lproj │ └── Localizable.strings ├── zh-Hant.lproj │ └── Localizable.strings ├── ja.lproj │ └── Localizable.strings ├── en.lproj │ └── Localizable.strings ├── Base.lproj │ └── Localizable.strings └── SettingsAppAccess.swift ├── SettingsAppAccess.podspec ├── SettingsAppAccessExampleUITests ├── Info.plist └── SettingsAppAccessExampleUITests.swift ├── LICENSE.md ├── CHANGELOG.md └── README.md /SettingsAppAccessExample/ja.lproj/LaunchScreen.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/zh-Hans.lproj/LaunchScreen.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/zh-Hant.lproj/LaunchScreen.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /README/URL Types - prefs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Adorkable/SettingsAppAccessiOS/master/README/URL Types - prefs.png -------------------------------------------------------------------------------- /Cocoapod/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'SettingsAppAccessCocoapodExample' do 4 | pod 'SettingsAppAccess', :path => '../' 5 | end 6 | -------------------------------------------------------------------------------- /SettingsAppAccess.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/ja.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UILabel"; text = "Label"; ObjectID = "Kff-uf-VhI"; */ 3 | "Kff-uf-VhI.text" = "Label"; 4 | 5 | /* Class = "UILabel"; text = "Settings App Locations"; ObjectID = "lJv-c0-UkY"; */ 6 | "lJv-c0-UkY.text" = "設定のAppの位置"; 7 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/zh-Hans.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UILabel"; text = "Label"; ObjectID = "Kff-uf-VhI"; */ 3 | "Kff-uf-VhI.text" = "Label"; 4 | 5 | /* Class = "UILabel"; text = "Settings App Locations"; ObjectID = "lJv-c0-UkY"; */ 6 | "lJv-c0-UkY.text" = "设置App的页面"; 7 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/zh-Hant.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UILabel"; text = "Label"; ObjectID = "Kff-uf-VhI"; */ 3 | "Kff-uf-VhI.text" = "Label"; 4 | 5 | /* Class = "UILabel"; text = "Settings App Locations"; ObjectID = "lJv-c0-UkY"; */ 6 | "lJv-c0-UkY.text" = "設定App的頁面"; 7 | -------------------------------------------------------------------------------- /Cocoapod/SettingsAppAccessCocoapodExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Cocoapod/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SettingsAppAccess (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - SettingsAppAccess (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | SettingsAppAccess: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | SettingsAppAccess: 728cd1041af81254a1451846fd42081861484e72 13 | 14 | COCOAPODS: 0.39.0 15 | -------------------------------------------------------------------------------- /Cocoapod/SettingsAppAccessCocoapodExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | .DS_Store 3 | 4 | # rbenv 5 | .ruby-version 6 | 7 | # Xcode 8 | # 9 | build/ 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata 19 | *.xccheckout 20 | *.moved-aside 21 | DerivedData 22 | *.hmap 23 | *.ipa 24 | *.xcuserstate 25 | 26 | # Cocoapods 27 | # 28 | Pods/ 29 | 30 | # Carthage 31 | # 32 | Carthage/Checkouts 33 | Carthage/Build 34 | 35 | # Documentation 36 | # 37 | docs 38 | 39 | # swiftenv 40 | .swift-version 41 | 42 | # Swift Package Manager 43 | .build 44 | -------------------------------------------------------------------------------- /SettingsAppAccess/SettingsAppAccess.h: -------------------------------------------------------------------------------- 1 | // 2 | // SettingsAppAccess.h 3 | // SettingsAppAccess 4 | // 5 | // Created by Ian Grossberg on 4/20/16. 6 | // Copyright © 2016 Adorkable. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for SettingsAppAccess. 12 | FOUNDATION_EXPORT double SettingsAppAccessVersionNumber; 13 | 14 | //! Project version string for SettingsAppAccess. 15 | FOUNDATION_EXPORT const unsigned char SettingsAppAccessVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /SettingsAppAccess.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.name = "SettingsAppAccess" 4 | s.version = "1.0.3" 5 | s.summary = "send your user to various locations within iOS' Settings app" 6 | 7 | s.homepage = "https://github.com/Adorkable/SettingsAppAccessiOS.git" 8 | 9 | s.author = { "Ian G" => "yo.ian.g@gmail.com" } 10 | s.platform = :ios, "9.0" 11 | 12 | s.license = "MIT" 13 | 14 | s.source = { :git => "https://github.com/Adorkable/SettingsAppAccessiOS.git", :tag => s.version.to_s } 15 | 16 | s.source_files = "SettingsAppAccess/**/*.swift" 17 | s.resources = [ 'SettingsAppAccess/*.lproj' ] 18 | s.requires_arc = true 19 | end 20 | -------------------------------------------------------------------------------- /SettingsAppAccessExampleUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0.3 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /SettingsAppAccess/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.3 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2016 Adorkable 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | 24 | 25 | -------------------------------------------------------------------------------- /SettingsAppAccess/UIApplication+SettingsAppAccess.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+SettingsAppAccess.swift 3 | // SettingsAppAccess 4 | // 5 | // Created by Ian Grossberg on 4/20/16. 6 | // Copyright © 2016 Adorkable. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIApplication { 12 | 13 | /** 14 | Attempt to open iOS' Settings App to a specified location 15 | 16 | - parameter location: location to open the iOS Settings App to 17 | 18 | - throws: if there was an issue creating the NSURL needed to open the location we throw an NSError 19 | 20 | - returns: if we can successfully open iOS' Settings App return true, otherwise return false. 21 | 22 | Usually a return value of false indicates a URL Type to handle 'prefs', the iOS Settings App's URL protocol, has not been created for the current app. 23 | 24 | Just like UIApplication's openURL(...) a return value of true does not indicate that we've successfully reached the expected path within iOS' Settings App, if the path is invalid we will open the iOS Settings App to the last open location and return true. 25 | 26 | */ 27 | public func settingsAppAccess_openLocation(location : SettingsAppLocation) throws -> Bool { 28 | return self.openURL(try location.URL()) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [1.0.3](https://github.com/Adorkable/SettingsAppAccessiOS/tree/1.0.3) (2016-09-10) 4 | [Full Changelog](https://github.com/Adorkable/SettingsAppAccessiOS/compare/1.0.2...1.0.3) 5 | 6 | **Merged pull requests:** 7 | 8 | - Support iOS 8.4 [\#4](https://github.com/Adorkable/SettingsAppAccessiOS/pull/4) ([yoiang](https://github.com/yoiang)) 9 | 10 | ## [1.0.2](https://github.com/Adorkable/SettingsAppAccessiOS/tree/1.0.2) (2016-09-10) 11 | [Full Changelog](https://github.com/Adorkable/SettingsAppAccessiOS/compare/1.0.1...1.0.2) 12 | 13 | **Merged pull requests:** 14 | 15 | - Localised to 3 languages [\#2](https://github.com/Adorkable/SettingsAppAccessiOS/pull/2) ([Sweeper777](https://github.com/Sweeper777)) 16 | - Correct the spelling of CocoaPods in README [\#1](https://github.com/Adorkable/SettingsAppAccessiOS/pull/1) ([ReadmeCritic](https://github.com/ReadmeCritic)) 17 | 18 | ## [1.0.1](https://github.com/Adorkable/SettingsAppAccessiOS/tree/1.0.1) (2016-05-02) 19 | [Full Changelog](https://github.com/Adorkable/SettingsAppAccessiOS/compare/1.0.0...1.0.1) 20 | 21 | ## [1.0.0](https://github.com/Adorkable/SettingsAppAccessiOS/tree/1.0.0) (2016-04-21) 22 | 23 | 24 | \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* -------------------------------------------------------------------------------- /SettingsAppAccessExampleUITests/SettingsAppAccessExampleUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SettingsAppAccessExampleUITests.swift 3 | // SettingsAppAccessExampleUITests 4 | // 5 | // Created by Ian Grossberg on 4/20/16. 6 | // Copyright © 2016 Adorkable. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class SettingsAppAccessExampleUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | 18 | // In UI tests it is usually best to stop immediately when a failure occurs. 19 | continueAfterFailure = false 20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 21 | XCUIApplication().launch() 22 | 23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 24 | } 25 | 26 | override func tearDown() { 27 | // Put teardown code here. This method is called after the invocation of each test method in the class. 28 | super.tearDown() 29 | } 30 | 31 | func testExample() { 32 | // Use recording to get started writing UI tests. 33 | // Use XCTAssert and related functions to verify your tests produce the correct results. 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "83.5x83.5", 66 | "scale" : "2x" 67 | } 68 | ], 69 | "info" : { 70 | "version" : 1, 71 | "author" : "xcode" 72 | } 73 | } -------------------------------------------------------------------------------- /SettingsAppAccessExample/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0.3 19 | CFBundleSignature 20 | ???? 21 | CFBundleURLTypes 22 | 23 | 24 | CFBundleTypeRole 25 | Editor 26 | CFBundleURLSchemes 27 | 28 | prefs 29 | 30 | 31 | 32 | CFBundleVersion 33 | 1 34 | LSRequiresIPhoneOS 35 | 36 | UILaunchStoryboardName 37 | LaunchScreen 38 | UIMainStoryboardFile 39 | Main 40 | UIRequiredDeviceCapabilities 41 | 42 | armv7 43 | 44 | UISupportedInterfaceOrientations 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UISupportedInterfaceOrientations~ipad 51 | 52 | UIInterfaceOrientationPortrait 53 | UIInterfaceOrientationPortraitUpsideDown 54 | UIInterfaceOrientationLandscapeLeft 55 | UIInterfaceOrientationLandscapeRight 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SettingsAppAccessExample 4 | // 5 | // Created by Ian Grossberg on 4/20/16. 6 | // Copyright © 2016 Adorkable. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(application: UIApplication) { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /SettingsAppAccess/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "About menu title" = "关于本机"; 3 | 4 | /* No comment provided by engineer. */ 5 | "Accessibility menu title" = "辅助功能"; 6 | 7 | /* No comment provided by engineer. */ 8 | "Auto-Lock menu title" = "自动锁定"; 9 | 10 | /* No comment provided by engineer. */ 11 | "Bluetooth menu title" = "蓝牙"; 12 | 13 | /* No comment provided by engineer. */ 14 | "Configuration Profiles menu title" = "配置描述文件"; 15 | 16 | /* No comment provided by engineer. */ 17 | "Date & Time menu title" = "日期与时间"; 18 | 19 | /* No comment provided by engineer. */ 20 | "FaceTime menu title" = "FaceTime"; 21 | 22 | /* No comment provided by engineer. */ 23 | "General menu title" = "一般"; 24 | 25 | /* No comment provided by engineer. */ 26 | "iCloud menu title" = "iCloud"; 27 | 28 | /* No comment provided by engineer. */ 29 | "iCloud Storage menu title" = "iCloud 存储"; 30 | 31 | /* No comment provided by engineer. */ 32 | "iTunes & App Stores menu title" = "iTunes 和 App Store"; 33 | 34 | /* Keyboards list within Keyboards menu */ 35 | "Keyboards -> Keyboards menu title" = "键盘 -> 键盘"; 36 | 37 | /* Keyboards settings menu */ 38 | "Keyboards menu title" = "键盘"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Language & Region menu title" = "语言和地区"; 42 | 43 | /* No comment provided by engineer. */ 44 | "Location Services menu title" = "位置服务"; 45 | 46 | /* No comment provided by engineer. */ 47 | "Mail, Contacts, Calendars menu title" = "电子邮件、通讯录和日历"; 48 | 49 | /* No comment provided by engineer. */ 50 | "Music menu title" = "音乐"; 51 | 52 | /* No comment provided by engineer. */ 53 | "Notes menu title" = "备忘录"; 54 | 55 | /* No comment provided by engineer. */ 56 | "Notifications menu title" = "通知"; 57 | 58 | /* No comment provided by engineer. */ 59 | "Personal Hotspot menu title" = "个人热点"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Phone menu title" = "电话"; 63 | 64 | /* No comment provided by engineer. */ 65 | "Photos & Camera menu title" = "照片与相机"; 66 | 67 | /* No comment provided by engineer. */ 68 | "Reset menu title" = "重置"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Ringtone menu title" = "铃声"; 72 | 73 | /* main Settings menu title */ 74 | "Settings menu title" = "设置"; 75 | 76 | /* No comment provided by engineer. */ 77 | "Software Update menu title" = "软件更新"; 78 | 79 | /* No comment provided by engineer. */ 80 | "Sounds menu title" = "声音"; 81 | 82 | /* No comment provided by engineer. */ 83 | "Twitter menu title" = "Twitter"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Unable to create NSURL for Settings App Location error description" = "无法创建 %s 的 NSURL"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Videos menu title" = "视频"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Wallet & Apple Pay menu title" = "Wallet 和 Apple Pay"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Wallpaper menu title" = "壁纸"; 96 | 97 | /* No comment provided by engineer. */ 98 | "Wi-Fi menu title" = "Wi-Fi"; -------------------------------------------------------------------------------- /SettingsAppAccess/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "About menu title" = "關於本機"; 3 | 4 | /* No comment provided by engineer. */ 5 | "Accessibility menu title" = "輔助功能"; 6 | 7 | /* No comment provided by engineer. */ 8 | "Auto-Lock menu title" = "自動鎖定"; 9 | 10 | /* No comment provided by engineer. */ 11 | "Bluetooth menu title" = "藍牙"; 12 | 13 | /* No comment provided by engineer. */ 14 | "Configuration Profiles menu title" = "配置描述文件"; 15 | 16 | /* No comment provided by engineer. */ 17 | "Date & Time menu title" = "日期與時間"; 18 | 19 | /* No comment provided by engineer. */ 20 | "FaceTime menu title" = "FaceTime"; 21 | 22 | /* No comment provided by engineer. */ 23 | "General menu title" = "一般"; 24 | 25 | /* No comment provided by engineer. */ 26 | "iCloud menu title" = "iCloud"; 27 | 28 | /* No comment provided by engineer. */ 29 | "iCloud Storage menu title" = "iCloud 存儲"; 30 | 31 | /* No comment provided by engineer. */ 32 | "iTunes & App Stores menu title" = "iTunes 和 App Store"; 33 | 34 | /* Keyboards list within Keyboards menu */ 35 | "Keyboards -> Keyboards menu title" = "鍵盤 -> 鍵盤"; 36 | 37 | /* Keyboards settings menu */ 38 | "Keyboards menu title" = "鍵盤"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Language & Region menu title" = "語言和地區"; 42 | 43 | /* No comment provided by engineer. */ 44 | "Location Services menu title" = "位置服務"; 45 | 46 | /* No comment provided by engineer. */ 47 | "Mail, Contacts, Calendars menu title" = "郵件、通訊錄和日曆"; 48 | 49 | /* No comment provided by engineer. */ 50 | "Music menu title" = "音樂"; 51 | 52 | /* No comment provided by engineer. */ 53 | "Notes menu title" = "備忘錄"; 54 | 55 | /* No comment provided by engineer. */ 56 | "Notifications menu title" = "通知"; 57 | 58 | /* No comment provided by engineer. */ 59 | "Personal Hotspot menu title" = "個人熱點"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Phone menu title" = "電話"; 63 | 64 | /* No comment provided by engineer. */ 65 | "Photos & Camera menu title" = "照片與相機"; 66 | 67 | /* No comment provided by engineer. */ 68 | "Reset menu title" = "重置"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Ringtone menu title" = "鈴聲"; 72 | 73 | /* main Settings menu title */ 74 | "Settings menu title" = "設定"; 75 | 76 | /* No comment provided by engineer. */ 77 | "Software Update menu title" = "軟件更新"; 78 | 79 | /* No comment provided by engineer. */ 80 | "Sounds menu title" = "聲音"; 81 | 82 | /* No comment provided by engineer. */ 83 | "Twitter menu title" = "Twitter"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Unable to create NSURL for Settings App Location error description" = "無法創建 %s 的 NSURL"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Videos menu title" = "影片"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Wallet & Apple Pay menu title" = "Wallet 和 Apple Pay"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Wallpaper menu title" = "壁紙"; 96 | 97 | /* No comment provided by engineer. */ 98 | "Wi-Fi menu title" = "Wi-Fi"; -------------------------------------------------------------------------------- /SettingsAppAccess/ja.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "About menu title" = "情報"; 3 | 4 | /* No comment provided by engineer. */ 5 | "Accessibility menu title" = "アクセシビリティ"; 6 | 7 | /* No comment provided by engineer. */ 8 | "Auto-Lock menu title" = "自動ロック"; 9 | 10 | /* No comment provided by engineer. */ 11 | "Bluetooth menu title" = "Bluetooth"; 12 | 13 | /* No comment provided by engineer. */ 14 | "Configuration Profiles menu title" = "Configuration Profiles"; 15 | 16 | /* No comment provided by engineer. */ 17 | "Date & Time menu title" = "日付と時刻"; 18 | 19 | /* No comment provided by engineer. */ 20 | "FaceTime menu title" = "FaceTime"; 21 | 22 | /* No comment provided by engineer. */ 23 | "General menu title" = "一般"; 24 | 25 | /* No comment provided by engineer. */ 26 | "iCloud menu title" = "iCloud"; 27 | 28 | /* No comment provided by engineer. */ 29 | "iCloud Storage menu title" = "iCloud 容量"; 30 | 31 | /* No comment provided by engineer. */ 32 | "iTunes & App Stores menu title" = "iTunes & App Stores"; 33 | 34 | /* Keyboards list within Keyboards menu */ 35 | "Keyboards -> Keyboards menu title" = "キーボード -> キーボード"; 36 | 37 | /* Keyboards settings menu */ 38 | "Keyboards menu title" = "キーボード"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Language & Region menu title" = "言语と地域"; 42 | 43 | /* No comment provided by engineer. */ 44 | "Location Services menu title" = "位置情報サービス"; 45 | 46 | /* No comment provided by engineer. */ 47 | "Mail, Contacts, Calendars menu title" = "メール/連絡先/カレンダー"; 48 | 49 | /* No comment provided by engineer. */ 50 | "Music menu title" = "ミュージック"; 51 | 52 | /* No comment provided by engineer. */ 53 | "Notes menu title" = "メモ"; 54 | 55 | /* No comment provided by engineer. */ 56 | "Notifications menu title" = "通知"; 57 | 58 | /* No comment provided by engineer. */ 59 | "Personal Hotspot menu title" = "インターネット共有"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Phone menu title" = "電話"; 63 | 64 | /* No comment provided by engineer. */ 65 | "Photos & Camera menu title" = "写真とカメラ"; 66 | 67 | /* No comment provided by engineer. */ 68 | "Reset menu title" = "リセット"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Ringtone menu title" = "着信音"; 72 | 73 | /* main Settings menu title */ 74 | "Settings menu title" = "設定"; 75 | 76 | /* No comment provided by engineer. */ 77 | "Software Update menu title" = "ソフトウェアアップデート"; 78 | 79 | /* No comment provided by engineer. */ 80 | "Sounds menu title" = "サウンド"; 81 | 82 | /* No comment provided by engineer. */ 83 | "Twitter menu title" = "Twitter"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Unable to create NSURL for Settings App Location error description" = "%sのためにNSURLを作成することができません"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Videos menu title" = "ビデオ"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Wallet & Apple Pay menu title" = "WalletとApple Pay"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Wallpaper menu title" = "壁紙"; 96 | 97 | /* No comment provided by engineer. */ 98 | "Wi-Fi menu title" = "Wi-Fi"; -------------------------------------------------------------------------------- /SettingsAppAccess/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "About menu title" = "About"; 3 | 4 | /* No comment provided by engineer. */ 5 | "Accessibility menu title" = "Accessibility"; 6 | 7 | /* No comment provided by engineer. */ 8 | "Auto-Lock menu title" = "Auto-Lock"; 9 | 10 | /* No comment provided by engineer. */ 11 | "Bluetooth menu title" = "Bluetooth"; 12 | 13 | /* No comment provided by engineer. */ 14 | "Configuration Profiles menu title" = "Configuration Profiles"; 15 | 16 | /* No comment provided by engineer. */ 17 | "Date & Time menu title" = "Date & Times"; 18 | 19 | /* No comment provided by engineer. */ 20 | "FaceTime menu title" = "FaceTime"; 21 | 22 | /* No comment provided by engineer. */ 23 | "General menu title" = "General"; 24 | 25 | /* No comment provided by engineer. */ 26 | "iCloud menu title" = "iCloud"; 27 | 28 | /* No comment provided by engineer. */ 29 | "iCloud Storage menu title" = "iCloud Storage"; 30 | 31 | /* No comment provided by engineer. */ 32 | "iTunes & App Stores menu title" = "iTunes & App Stores"; 33 | 34 | /* Keyboards list within Keyboards menu */ 35 | "Keyboards -> Keyboards menu title" = "Keyboards -> Keyboards"; 36 | 37 | /* Keyboards settings menu */ 38 | "Keyboards menu title" = "Keyboards"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Language & Region menu title" = "Language & Region"; 42 | 43 | /* No comment provided by engineer. */ 44 | "Location Services menu title" = "Location Services"; 45 | 46 | /* No comment provided by engineer. */ 47 | "Mail, Contacts, Calendars menu title" = "Mail, Contacts, Calendars"; 48 | 49 | /* No comment provided by engineer. */ 50 | "Music menu title" = "Music"; 51 | 52 | /* No comment provided by engineer. */ 53 | "Notes menu title" = "Notes"; 54 | 55 | /* No comment provided by engineer. */ 56 | "Notifications menu title" = "Notifications"; 57 | 58 | /* No comment provided by engineer. */ 59 | "Personal Hotspot menu title" = "Personal Hotspot"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Phone menu title" = "Phone"; 63 | 64 | /* No comment provided by engineer. */ 65 | "Photos & Camera menu title" = "Photos & Camera"; 66 | 67 | /* No comment provided by engineer. */ 68 | "Reset menu title" = "Reset"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Ringtone menu title" = "Ringtone"; 72 | 73 | /* main Settings menu title */ 74 | "Settings menu title" = "Settings"; 75 | 76 | /* No comment provided by engineer. */ 77 | "Software Update menu title" = "Software Update"; 78 | 79 | /* No comment provided by engineer. */ 80 | "Sounds menu title" = "Sounds"; 81 | 82 | /* No comment provided by engineer. */ 83 | "Twitter menu title" = "Twitter"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Unable to create NSURL for Settings App Location error description" = "Unable to create NSURL for location %s"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Videos menu title" = "Videos"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Wallet & Apple Pay menu title" = "Wallet & Apple Pay"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Wallpaper menu title" = "Wallpaper"; 96 | 97 | /* No comment provided by engineer. */ 98 | "Wi-Fi menu title" = "Wi-Fi"; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SettingsAppAccess 2 | === 3 | 4 | **SettingsAppAccess** is a simple iOS library that will send your Users to various locations with the _iOS Settings App_. 5 | 6 | Installation 7 | --- 8 | **SettingsAppAccess** is available through **[CocoaPods](http://cocoapods.org)**, to install simple add the following line to your `Podfile`: 9 | 10 | ``` ruby 11 | pod "SettingsAppAccess" 12 | ``` 13 | 14 | Alternatively you can add the **[github repo](https://github.com/Adorkable/SettingsAppAccessiOS)** as a submodule and use **SettingsAppAccess** as a framework. 15 | 16 | Carthage support soon! 17 | 18 | Usage 19 | --- 20 | 21 | #### Setup 22 | Before you can successfully open up a location with _iOS' Settings App_ you must add a `URL Type` to handle its protocol to your app: 23 | 24 | 1. Open your app target's _Info_ page 25 | 2. Expand _URL Types_ 26 | 3. Press the **+** Button to add a new _URL Type_ 27 | 4. Set _URL Schemes_ to `prefs` 28 | 29 | ![URL Types - prefs](README/URL Types - prefs.png) 30 | 31 | Now we're ready to use the library! 32 | 33 | 34 | **SettingsAppAccess** defines the enum `SettingsAppLocation` which contains the paths to various known locations in the _iOS Settings App_. 35 | 36 | #### `UIApplication` Extension 37 | The library provides an extension to `UIApplication` to accept our `SettingsAppLocation` enum: 38 | 39 | ``` swift 40 | do { 41 | try UIApplication.sharedApplication().settingsAppAccess_openLocation(SettingsAppLocation.Settings) 42 | } catch let error as NSError { 43 | ... 44 | } 45 | ``` 46 | 47 | #### Manually 48 | One can use the enum directly to create an `NSURL`, and call `openURL`: 49 | 50 | ``` swift 51 | do { 52 | let url = try SettingsAppLocation.Settings.URL() 53 | let openURLResult = UIApplication.sharedApplication().openURL(url) 54 | } catch let error as NSError { 55 | ... 56 | } 57 | ``` 58 | 59 | One can also use the `rawValue` of the enum directly, manually create an `NSURL`, and call `openURL`: 60 | 61 | ``` swift 62 | guard let url = NSURL(string: SettingsAppLocation.Settings.rawValue) { 63 | return 64 | } 65 | let openURLResult = UIApplication.sharedApplication().openURL(url) 66 | ``` 67 | 68 | Contributing 69 | --- 70 | If you have additional _iOS Settings App_ **paths** please feel free to create an issue or a pull request and they will get added to the library! 71 | 72 | If you have any ideas, suggestions or bugs to report please [create an issue](https://github.com/Adorkable/SettingsAppAccessiOS/issues/new) labeled *feature* or *bug* (check to see if the issue exists first please!) or create a pull request! 73 | 74 | #### Translation 75 | The human readable names list is localized, anyone who would like to translate the list into a language they know should create a pull request! 76 | 77 | Thanks to [Sweeper777](https://github.com/Sweeper777) for Simplified and Traditional Chinese as well as Japanese translations! 78 | 79 | #### Library Name 80 | PS: If you think you have a better name than **SettingsAppAccess** please create an issue, _SettingsAppAccess_ is a mouthful...of bleh! 81 | 82 | Thanks 83 | --- 84 | This library was inspired by [this post](https://gist.github.com/phynet/471089a51b8f940f0fb4) by Sofia Swidarowicz ([http://phyline.com](http://phyline.com)) and based on her original list and all its contributers! 85 | -------------------------------------------------------------------------------- /SettingsAppAccess.xcodeproj/xcshareddata/xcschemes/SettingsAppAccess.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /SettingsAppAccess/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* No comment provided by engineer. */ 2 | "About menu title" = "About"; 3 | 4 | /* No comment provided by engineer. */ 5 | "Accessibility menu title" = "Accessibility"; 6 | 7 | /* No comment provided by engineer. */ 8 | "Account Settings menu title" = "Account Settings"; 9 | 10 | /* No comment provided by engineer. */ 11 | "Auto-Lock menu title" = "Auto-Lock"; 12 | 13 | /* No comment provided by engineer. */ 14 | "Bluetooth menu title" = "Bluetooth"; 15 | 16 | /* No comment provided by engineer. */ 17 | "Configuration Profiles menu title" = "Configuration Profiles"; 18 | 19 | /* No comment provided by engineer. */ 20 | "Date & Time menu title" = "Date & Time"; 21 | 22 | /* No comment provided by engineer. */ 23 | "FaceTime menu title" = "FaceTime"; 24 | 25 | /* No comment provided by engineer. */ 26 | "General menu title" = "General"; 27 | 28 | /* No comment provided by engineer. */ 29 | "iCloud menu title" = "iCloud"; 30 | 31 | /* Keyboards list within Keyboards menu */ 32 | "Keyboards -> Keyboards menu title" = "Keyboards -> Keyboards"; 33 | 34 | /* Keyboards settings menu */ 35 | "Keyboards menu title" = "Keyboards"; 36 | 37 | /* No comment provided by engineer. */ 38 | "Language & Region menu title" = "Language & Region"; 39 | 40 | /* No comment provided by engineer. */ 41 | "Location Services menu title" = "Location Services"; 42 | 43 | /* No comment provided by engineer. */ 44 | "Mail, Contacts, Calendars menu title" = "Mail, Contacts, Calendars"; 45 | 46 | /* No comment provided by engineer. */ 47 | "Music menu title" = "Music"; 48 | 49 | /* No comment provided by engineer. */ 50 | "Network menu title" = "Network"; 51 | 52 | /* No comment provided by engineer. */ 53 | "Nike iPod menu title" = "Nike iPod"; 54 | 55 | /* No comment provided by engineer. */ 56 | "Notes menu title" = "Notes"; 57 | 58 | /* No comment provided by engineer. */ 59 | "Notifications ID menu title" = "Notifications ID"; 60 | 61 | /* No comment provided by engineer. */ 62 | "Passbook menu title" = "Passbook"; 63 | 64 | /* No comment provided by engineer. */ 65 | "Personal Hotspot menu title" = "Personal Hotspot"; 66 | 67 | /* No comment provided by engineer. */ 68 | "Phone menu title" = "Phone"; 69 | 70 | /* No comment provided by engineer. */ 71 | "Photo Camera Roll menu title" = "Photo Camera Roll"; 72 | 73 | /* No comment provided by engineer. */ 74 | "Reset menu title" = "Reset"; 75 | 76 | /* No comment provided by engineer. */ 77 | "Ringtone menu title" = "Ringtone"; 78 | 79 | /* No comment provided by engineer. */ 80 | "Safari menu title" = "Safari"; 81 | 82 | /* main Settings menu title */ 83 | "Settings menu title" = "Settings"; 84 | 85 | /* No comment provided by engineer. */ 86 | "Siri menu title" = "Siri"; 87 | 88 | /* No comment provided by engineer. */ 89 | "Software Update menu title" = "Software Update"; 90 | 91 | /* No comment provided by engineer. */ 92 | "Sounds menu title" = "Sounds"; 93 | 94 | /* No comment provided by engineer. */ 95 | "Storage & Backup menu title" = "Storage & Backup"; 96 | 97 | /* No comment provided by engineer. */ 98 | "Store menu title" = "Store"; 99 | 100 | /* No comment provided by engineer. */ 101 | "Twitter menu title" = "Twitter"; 102 | 103 | /* No comment provided by engineer. */ 104 | "Usage menu title" = "Usage"; 105 | 106 | /* No comment provided by engineer. */ 107 | "Video menu title" = "Video"; 108 | 109 | /* No comment provided by engineer. */ 110 | "VPN menu title" = "VPN"; 111 | 112 | /* No comment provided by engineer. */ 113 | "Wallpaper menu title" = "Wallpaper"; 114 | 115 | /* No comment provided by engineer. */ 116 | "Wifi menu title" = "Wifi"; 117 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // SettingsAppAccessExample 4 | // 5 | // Created by Ian Grossberg on 4/20/16. 6 | // Copyright © 2016 Adorkable. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | import SettingsAppAccess 12 | 13 | // No great way to iterate enums yet :( :( :( 14 | // Wonderfully hacky iterate from http://stackoverflow.com/a/28341290 15 | func iterateEnum(_: T.Type) -> AnyGenerator { 16 | var i = 0 17 | return AnyGenerator { 18 | let next = withUnsafePointer(&i) { UnsafePointer($0).memory } 19 | 20 | let value : T? 21 | if next.hashValue == i { 22 | value = next 23 | } else { 24 | value = nil 25 | } 26 | i = i + 1 27 | return value 28 | } 29 | } 30 | 31 | class ViewController: UIViewController { 32 | 33 | let locations : [SettingsAppLocation] 34 | @IBOutlet internal weak var locationsTableView : UITableView? 35 | 36 | required init?(coder aDecoder: NSCoder) { 37 | var locations : [SettingsAppLocation] = [] 38 | for value in iterateEnum(SettingsAppLocation.self) { 39 | locations.append(value) 40 | } 41 | self.locations = locations 42 | 43 | super.init(coder: aDecoder) 44 | } 45 | } 46 | 47 | class SettingsAppLocationCell : UITableViewCell { 48 | 49 | @IBOutlet internal weak var locationLabel : UILabel? 50 | 51 | func populate(location : SettingsAppLocation) { 52 | self.locationLabel?.text = location.humanReadableString 53 | } 54 | } 55 | 56 | extension ViewController : UITableViewDelegate, UITableViewDataSource { 57 | 58 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 59 | return self.locations.count 60 | } 61 | 62 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 63 | 64 | let cell = tableView.dequeueReusableCellWithIdentifier("Location", forIndexPath: indexPath) 65 | 66 | guard indexPath.row >= 0 && indexPath.row < locations.count else { 67 | NSLog("ERROR: cellForRowAtIndexPath is asking for row \(indexPath.row), beyond locations.count \(locations.count)") 68 | return cell 69 | } 70 | let location = self.locations[indexPath.row] 71 | 72 | guard let locationCell = cell as? SettingsAppLocationCell else { 73 | NSLog("ERROR: while attempting to populate location cell, unable to retrieve cell of type \(SettingsAppLocationCell.self)") 74 | return cell 75 | } 76 | 77 | locationCell.populate(location) 78 | return locationCell 79 | } 80 | 81 | func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 82 | 83 | tableView.deselectRowAtIndexPath(indexPath, animated: true) 84 | 85 | guard indexPath.row >= 0 && indexPath.row < locations.count else { 86 | NSLog("ERROR: cellForRowAtIndexPath is asking for row \(indexPath.row), beyond locations.count \(locations.count)") 87 | return 88 | } 89 | let location = self.locations[indexPath.row] 90 | 91 | do { 92 | if try UIApplication.sharedApplication().settingsAppAccess_openLocation(location) == false { 93 | NSLog("ERROR: unable to open location '\(location.humanReadableString), make sure app has a URL Type set for 'prefs'") 94 | } 95 | } catch let error as NSError { 96 | NSLog("ERROR: while attempting to open location \(location.rawValue): \(error)") 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /SettingsAppAccess.xcodeproj/xcshareddata/xcschemes/SettingsAppAccessExample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /Cocoapod/SettingsAppAccessCocoapodExample.xcodeproj/xcshareddata/xcschemes/SettingsAppAccessCocoapodExample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /SettingsAppAccessExample/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /SettingsAppAccess/SettingsAppAccess.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SettingsAppAccess.swift 3 | // SettingsAppAccess 4 | // 5 | // Created by Ian Grossberg on 4/20/16. 6 | // Copyright © 2016 Adorkable. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// SettingsAppLocation is our collection of paths within iOS' Settings App 12 | public enum SettingsAppLocation : String { 13 | 14 | // List originally collected by Sofia Swidarowicz ( http://phyline.com ), https://gist.github.com/phynet/471089a51b8f940f0fb4 15 | 16 | /// Root Settings 17 | case Settings = "prefs:" 18 | 19 | /// About 20 | case About = "prefs:root=General&path=About" 21 | /// Accessibility 22 | case Accessibility = "prefs:root=General&path=ACCESSIBILITY" 23 | /// Auto-Lock 24 | case AutoLock = "prefs:root=General&path=AUTOLOCK" 25 | /// Bluetooth 26 | case Bluetooth = "prefs:root=Bluetooth" // Bluetooth iOS >= 9 27 | /// Configuration Profiles 28 | case ConfigurationProfiles = "prefs:root=General&path=ManagedConfigurationList" 29 | /// Date & Time 30 | case DateandTime = "prefs:root=General&path=DATE_AND_TIME" 31 | /// FaceTime 32 | case FaceTime = "prefs:root=FACETIME" 33 | /// General 34 | case General = "prefs:root=General" 35 | /// iCloud 36 | case iCloud = "prefs:root=CASTLE" 37 | /// iCloud Storage 38 | case iCloudStorage = "prefs:root=CASTLE&path=STORAGE_AND_BACKUP" 39 | /// iTunes & App Stores 40 | case iTunesandAppStores = "prefs:root=STORE" 41 | /// Keyboards 42 | case Keyboards = "prefs:root=General&path=Keyboard" 43 | /// Keyboards list with the Keyboards menu 44 | case KeyboardsKeyboards = "prefs:root=General&path=Keyboard/KEYBOARDS" 45 | /// Language & Region 46 | case LanguageandRegion = "prefs:root=General&path=INTERNATIONAL" 47 | /// Location Services 48 | case LocationServices = "prefs:root=LOCATION_SERVICES" 49 | /// Mail, Contacts, Calendars ie: Account Settings 50 | case MailContactsCalendars = "prefs:root=ACCOUNT_SETTINGS" 51 | /// Music 52 | case Music = "prefs:root=MUSIC" 53 | /// Notes 54 | case Notes = "prefs:root=NOTES" 55 | /// Notifications 56 | case Notifications = "prefs:root=NOTIFICATIONS_ID" 57 | /// Personal Hotspot 58 | case PersonalHotspot = "prefs:root=INTERNET_TETHERING" 59 | /// Phone 60 | case Phone = "prefs:root=Phone" 61 | /// Photos & Camera 62 | case PhotosandCamera = "prefs:root=Photos" 63 | /// Reset phone and settings 64 | case Reset = "prefs:root=General&path=Reset" 65 | /// Ringtones 66 | case Ringtone = "prefs:root=Sounds&path=Ringtone" 67 | /// Sounds 68 | case Sounds = "prefs:root=Sounds" 69 | /// Software Update 70 | case SoftwareUpdate = "prefs:root=General&path=SOFTWARE_UPDATE_LINK" 71 | /// Twitter 72 | case Twitter = "prefs:root=TWITTER" 73 | /// Videos 74 | case Videos = "prefs:root=VIDEO" 75 | /// Wallet & Apple Pay 76 | case WalletandApplePay = "prefs:root=PASSBOOK" 77 | /// Wallpaper 78 | case Wallpaper = "prefs:root=Wallpaper" 79 | /// Wi-Fi 80 | case WiFi = "prefs:root=WIFI" 81 | 82 | /// Return a human readable string 83 | public var humanReadableString : String { 84 | let settingsAppAccessBundle = NSBundle(forClass: SettingsAppAccess.self) 85 | 86 | switch self { 87 | case .Settings: 88 | return NSLocalizedString("Settings menu title", value: "Settings", bundle: settingsAppAccessBundle, comment: "main Settings menu title") 89 | 90 | case .About: 91 | return NSLocalizedString("About menu title", value: "About", bundle: settingsAppAccessBundle, comment: "") 92 | 93 | case .Accessibility: 94 | return NSLocalizedString("Accessibility menu title", value: "Accessibility", bundle: settingsAppAccessBundle, comment: "") 95 | 96 | case .AutoLock: 97 | return NSLocalizedString("Auto-Lock menu title", value: "Auto-Lock", bundle: settingsAppAccessBundle, comment: "") 98 | 99 | case .Bluetooth: 100 | return NSLocalizedString("Bluetooth menu title", value: "Bluetooth", bundle: settingsAppAccessBundle, comment: "") 101 | 102 | case .ConfigurationProfiles: 103 | return NSLocalizedString("Configuration Profiles menu title", bundle: settingsAppAccessBundle, value: "Configuration Profiles", comment: "") 104 | 105 | case .DateandTime: 106 | return NSLocalizedString("Date & Time menu title", bundle: settingsAppAccessBundle, value: "Date & Time", comment: "") 107 | 108 | case .FaceTime: 109 | return NSLocalizedString("FaceTime menu title", bundle: settingsAppAccessBundle, value: "FaceTime", comment: "") 110 | 111 | case .General: 112 | return NSLocalizedString("General menu title", bundle: settingsAppAccessBundle, value: "General", comment: "") 113 | 114 | case .iCloud: 115 | return NSLocalizedString("iCloud menu title", bundle: settingsAppAccessBundle, value: "iCloud", comment: "") 116 | 117 | case .iCloudStorage: 118 | return NSLocalizedString("iCloud Storage menu title", bundle: settingsAppAccessBundle, value: "iCloud Storage", comment: "") 119 | 120 | case .iTunesandAppStores: 121 | return NSLocalizedString("iTunes & App Stores menu title", bundle: settingsAppAccessBundle, value: "iTunes & App Stores", comment: "") 122 | 123 | case .Keyboards: 124 | return NSLocalizedString("Keyboards menu title", bundle: settingsAppAccessBundle, value: "Keyboards", comment: "Keyboards settings menu") 125 | 126 | case .KeyboardsKeyboards: 127 | return NSLocalizedString("Keyboards -> Keyboards menu title", bundle: settingsAppAccessBundle, value: "Keyboards -> Keyboards", comment: "Keyboards list within Keyboards menu") 128 | 129 | case .LanguageandRegion: 130 | return NSLocalizedString("Language & Region menu title", bundle: settingsAppAccessBundle, value: "Language & Region", comment: "") 131 | 132 | case .LocationServices: 133 | return NSLocalizedString("Location Services menu title", bundle: settingsAppAccessBundle, value: "Location Services", comment: "") 134 | 135 | case .MailContactsCalendars: 136 | return NSLocalizedString("Mail, Contacts, Calendars menu title", bundle: settingsAppAccessBundle, value: "Mail, Contacts, Calendars", comment: "") 137 | 138 | case .Music: 139 | return NSLocalizedString("Music menu title", bundle: settingsAppAccessBundle, value: "Music", comment: "") 140 | 141 | case .Notes: 142 | return NSLocalizedString("Notes menu title", bundle: settingsAppAccessBundle, value: "Notes", comment: "") 143 | 144 | case .Notifications: 145 | return NSLocalizedString("Notifications menu title", bundle: settingsAppAccessBundle, value: "Notifications", comment: "") 146 | 147 | case .PersonalHotspot: 148 | return NSLocalizedString("Personal Hotspot menu title", bundle: settingsAppAccessBundle, value: "Personal Hotspot", comment: "") 149 | 150 | case .Phone: 151 | return NSLocalizedString("Phone menu title", bundle: settingsAppAccessBundle, value: "Phone", comment: "") 152 | 153 | case .PhotosandCamera: 154 | return NSLocalizedString("Photos & Camera menu title", bundle: settingsAppAccessBundle, value: "Photos & Camera", comment: "") 155 | 156 | case .Reset: 157 | return NSLocalizedString("Reset menu title", bundle: settingsAppAccessBundle, value: "Reset", comment: "") 158 | 159 | case .Ringtone: 160 | return NSLocalizedString("Ringtone menu title", bundle: settingsAppAccessBundle, value: "Ringtone", comment: "") 161 | 162 | case .Sounds: 163 | return NSLocalizedString("Sounds menu title", bundle: settingsAppAccessBundle, value: "Sounds", comment: "") 164 | 165 | case .SoftwareUpdate: 166 | return NSLocalizedString("Software Update menu title", bundle: settingsAppAccessBundle, value: "Software Update", comment: "") 167 | 168 | case .Twitter: 169 | return NSLocalizedString("Twitter menu title", bundle: settingsAppAccessBundle, value: "Twitter", comment: "") 170 | 171 | case .Videos: 172 | return NSLocalizedString("Videos menu title", bundle: settingsAppAccessBundle, value: "Videos", comment: "") 173 | 174 | case .WalletandApplePay: 175 | return NSLocalizedString("Wallet & Apple Pay menu title", bundle: settingsAppAccessBundle, value: "Wallet & Apple Pay", comment: "") 176 | 177 | case .Wallpaper: 178 | return NSLocalizedString("Wallpaper menu title", bundle: settingsAppAccessBundle, value: "Wallpaper", comment: "") 179 | 180 | case .WiFi: 181 | return NSLocalizedString("Wi-Fi menu title", bundle: settingsAppAccessBundle, value: "Wi-Fi", comment: "") 182 | } 183 | } 184 | 185 | private func unableToCreateURLError() -> NSError { 186 | let descriptionFormat = NSLocalizedString("Unable to create NSURL for Settings App Location error description", comment: "") 187 | let description = String(format: descriptionFormat, self.rawValue) 188 | 189 | return NSError(domain: "com.adorkable.SettingsAppAccess", code: 1, userInfo: [ 190 | NSLocalizedDescriptionKey : description 191 | ]) 192 | } 193 | 194 | /** 195 | Attempt to create an NSURL with our path 196 | 197 | - returns: A new NSURL if one can be created with our path, otherwise nil 198 | */ 199 | public func URL() -> NSURL? { 200 | return NSURL(string: self.rawValue) 201 | } 202 | 203 | /** 204 | Attempt to create an NSURL with out path 205 | 206 | - throws: If we cannot create an NSURL with our path we throw an NSError 207 | 208 | - returns: A new NURL with our path 209 | */ 210 | public func URL() throws -> NSURL { 211 | 212 | guard let url = NSURL(string: self.rawValue) else { 213 | throw self.unableToCreateURLError() 214 | } 215 | 216 | return url 217 | } 218 | } 219 | 220 | /// SettingsAppAccess currently exists to identify our bundle for and retrieve our localization 221 | private class SettingsAppAccess { 222 | 223 | } -------------------------------------------------------------------------------- /Cocoapod/SettingsAppAccessCocoapodExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 3C93AD7E1CC8766000FE6260 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C93AD751CC8766000FE6260 /* AppDelegate.swift */; }; 11 | 3C93AD7F1CC8766000FE6260 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3C93AD761CC8766000FE6260 /* Assets.xcassets */; }; 12 | 3C93AD801CC8766000FE6260 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C93AD781CC8766000FE6260 /* LaunchScreen.storyboard */; }; 13 | 3C93AD811CC8766000FE6260 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C93AD7A1CC8766000FE6260 /* Main.storyboard */; }; 14 | 3C93AD821CC8766000FE6260 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3C93AD7C1CC8766000FE6260 /* Info.plist */; }; 15 | 3C93AD831CC8766000FE6260 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C93AD7D1CC8766000FE6260 /* ViewController.swift */; }; 16 | 3C93AD881CC8774500FE6260 /* SettingsAppAccessExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C93AD851CC8768B00FE6260 /* SettingsAppAccessExampleUITests.swift */; }; 17 | 3C93AD891CC8774C00FE6260 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3C93AD841CC8768B00FE6260 /* Info.plist */; }; 18 | 941FD9330DBC5D3BCE6E44AC /* Pods_SettingsAppAccessCocoapodExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01575D6562FCFCF7F09DFBAE /* Pods_SettingsAppAccessCocoapodExample.framework */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 3C93AD581CC875D600FE6260 /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = 3C93AD3B1CC875D600FE6260 /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 3C93AD421CC875D600FE6260; 27 | remoteInfo = SettingsAppAccessCocoapodExample; 28 | }; 29 | /* End PBXContainerItemProxy section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 01575D6562FCFCF7F09DFBAE /* Pods_SettingsAppAccessCocoapodExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SettingsAppAccessCocoapodExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 33 | 19EE52168EBD878A6B5E9328 /* Pods-SettingsAppAccessCocoapodExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SettingsAppAccessCocoapodExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-SettingsAppAccessCocoapodExample/Pods-SettingsAppAccessCocoapodExample.release.xcconfig"; sourceTree = ""; }; 34 | 3C93AD431CC875D600FE6260 /* SettingsAppAccessCocoapodExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SettingsAppAccessCocoapodExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 3C93AD571CC875D600FE6260 /* SettingsAppAccessCocoapodExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SettingsAppAccessCocoapodExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 36 | 3C93AD751CC8766000FE6260 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 3C93AD761CC8766000FE6260 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 38 | 3C93AD791CC8766000FE6260 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = LaunchScreen.storyboard; sourceTree = ""; }; 39 | 3C93AD7B1CC8766000FE6260 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Main.storyboard; sourceTree = ""; }; 40 | 3C93AD7C1CC8766000FE6260 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 41 | 3C93AD7D1CC8766000FE6260 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 42 | 3C93AD841CC8768B00FE6260 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 43 | 3C93AD851CC8768B00FE6260 /* SettingsAppAccessExampleUITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppAccessExampleUITests.swift; sourceTree = ""; }; 44 | 3C93AD8A1CC87B1600FE6260 /* SettingsAppAccess.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; name = SettingsAppAccess.podspec; path = ../SettingsAppAccess.podspec; sourceTree = ""; }; 45 | ED33F6E06AFA0A689FF1D94D /* Pods-SettingsAppAccessCocoapodExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SettingsAppAccessCocoapodExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SettingsAppAccessCocoapodExample/Pods-SettingsAppAccessCocoapodExample.debug.xcconfig"; sourceTree = ""; }; 46 | /* End PBXFileReference section */ 47 | 48 | /* Begin PBXFrameworksBuildPhase section */ 49 | 3C93AD401CC875D600FE6260 /* Frameworks */ = { 50 | isa = PBXFrameworksBuildPhase; 51 | buildActionMask = 2147483647; 52 | files = ( 53 | 941FD9330DBC5D3BCE6E44AC /* Pods_SettingsAppAccessCocoapodExample.framework in Frameworks */, 54 | ); 55 | runOnlyForDeploymentPostprocessing = 0; 56 | }; 57 | 3C93AD541CC875D600FE6260 /* Frameworks */ = { 58 | isa = PBXFrameworksBuildPhase; 59 | buildActionMask = 2147483647; 60 | files = ( 61 | ); 62 | runOnlyForDeploymentPostprocessing = 0; 63 | }; 64 | /* End PBXFrameworksBuildPhase section */ 65 | 66 | /* Begin PBXGroup section */ 67 | 3C93AD3A1CC875D600FE6260 = { 68 | isa = PBXGroup; 69 | children = ( 70 | 3C93AD8A1CC87B1600FE6260 /* SettingsAppAccess.podspec */, 71 | 3C93AD451CC875D600FE6260 /* SettingsAppAccessCocoapodExample */, 72 | 3C93AD5A1CC875D600FE6260 /* SettingsAppAccessCocoapodExampleUITests */, 73 | 3C93AD441CC875D600FE6260 /* Products */, 74 | FC878351DE3B464BD2E8C1BF /* Pods */, 75 | 4AA18A1067579E88BA6DE61A /* Frameworks */, 76 | ); 77 | sourceTree = ""; 78 | }; 79 | 3C93AD441CC875D600FE6260 /* Products */ = { 80 | isa = PBXGroup; 81 | children = ( 82 | 3C93AD431CC875D600FE6260 /* SettingsAppAccessCocoapodExample.app */, 83 | 3C93AD571CC875D600FE6260 /* SettingsAppAccessCocoapodExampleUITests.xctest */, 84 | ); 85 | name = Products; 86 | sourceTree = ""; 87 | }; 88 | 3C93AD451CC875D600FE6260 /* SettingsAppAccessCocoapodExample */ = { 89 | isa = PBXGroup; 90 | children = ( 91 | 3C93AD751CC8766000FE6260 /* AppDelegate.swift */, 92 | 3C93AD761CC8766000FE6260 /* Assets.xcassets */, 93 | 3C93AD771CC8766000FE6260 /* Base.lproj */, 94 | 3C93AD7C1CC8766000FE6260 /* Info.plist */, 95 | 3C93AD7D1CC8766000FE6260 /* ViewController.swift */, 96 | ); 97 | name = SettingsAppAccessCocoapodExample; 98 | path = ../SettingsAppAccessExample; 99 | sourceTree = ""; 100 | }; 101 | 3C93AD5A1CC875D600FE6260 /* SettingsAppAccessCocoapodExampleUITests */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 3C93AD841CC8768B00FE6260 /* Info.plist */, 105 | 3C93AD851CC8768B00FE6260 /* SettingsAppAccessExampleUITests.swift */, 106 | ); 107 | name = SettingsAppAccessCocoapodExampleUITests; 108 | path = ../SettingsAppAccessExampleUITests; 109 | sourceTree = ""; 110 | }; 111 | 3C93AD771CC8766000FE6260 /* Base.lproj */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 3C93AD781CC8766000FE6260 /* LaunchScreen.storyboard */, 115 | 3C93AD7A1CC8766000FE6260 /* Main.storyboard */, 116 | ); 117 | path = Base.lproj; 118 | sourceTree = ""; 119 | }; 120 | 4AA18A1067579E88BA6DE61A /* Frameworks */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | 01575D6562FCFCF7F09DFBAE /* Pods_SettingsAppAccessCocoapodExample.framework */, 124 | ); 125 | name = Frameworks; 126 | sourceTree = ""; 127 | }; 128 | FC878351DE3B464BD2E8C1BF /* Pods */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | ED33F6E06AFA0A689FF1D94D /* Pods-SettingsAppAccessCocoapodExample.debug.xcconfig */, 132 | 19EE52168EBD878A6B5E9328 /* Pods-SettingsAppAccessCocoapodExample.release.xcconfig */, 133 | ); 134 | name = Pods; 135 | sourceTree = ""; 136 | }; 137 | /* End PBXGroup section */ 138 | 139 | /* Begin PBXNativeTarget section */ 140 | 3C93AD421CC875D600FE6260 /* SettingsAppAccessCocoapodExample */ = { 141 | isa = PBXNativeTarget; 142 | buildConfigurationList = 3C93AD601CC875D600FE6260 /* Build configuration list for PBXNativeTarget "SettingsAppAccessCocoapodExample" */; 143 | buildPhases = ( 144 | 83849164261234A735E0162C /* Check Pods Manifest.lock */, 145 | 3C93AD3F1CC875D600FE6260 /* Sources */, 146 | 3C93AD401CC875D600FE6260 /* Frameworks */, 147 | 3C93AD411CC875D600FE6260 /* Resources */, 148 | 7D909F8066D916E7D3792093 /* Embed Pods Frameworks */, 149 | F26368F22C7A346A1DC9033E /* Copy Pods Resources */, 150 | ); 151 | buildRules = ( 152 | ); 153 | dependencies = ( 154 | ); 155 | name = SettingsAppAccessCocoapodExample; 156 | productName = SettingsAppAccessCocoapodExample; 157 | productReference = 3C93AD431CC875D600FE6260 /* SettingsAppAccessCocoapodExample.app */; 158 | productType = "com.apple.product-type.application"; 159 | }; 160 | 3C93AD561CC875D600FE6260 /* SettingsAppAccessCocoapodExampleUITests */ = { 161 | isa = PBXNativeTarget; 162 | buildConfigurationList = 3C93AD631CC875D600FE6260 /* Build configuration list for PBXNativeTarget "SettingsAppAccessCocoapodExampleUITests" */; 163 | buildPhases = ( 164 | 3C93AD531CC875D600FE6260 /* Sources */, 165 | 3C93AD541CC875D600FE6260 /* Frameworks */, 166 | 3C93AD551CC875D600FE6260 /* Resources */, 167 | ); 168 | buildRules = ( 169 | ); 170 | dependencies = ( 171 | 3C93AD591CC875D600FE6260 /* PBXTargetDependency */, 172 | ); 173 | name = SettingsAppAccessCocoapodExampleUITests; 174 | productName = SettingsAppAccessCocoapodExampleUITests; 175 | productReference = 3C93AD571CC875D600FE6260 /* SettingsAppAccessCocoapodExampleUITests.xctest */; 176 | productType = "com.apple.product-type.bundle.ui-testing"; 177 | }; 178 | /* End PBXNativeTarget section */ 179 | 180 | /* Begin PBXProject section */ 181 | 3C93AD3B1CC875D600FE6260 /* Project object */ = { 182 | isa = PBXProject; 183 | attributes = { 184 | LastSwiftUpdateCheck = 0730; 185 | LastUpgradeCheck = 0730; 186 | ORGANIZATIONNAME = Adorkable; 187 | TargetAttributes = { 188 | 3C93AD421CC875D600FE6260 = { 189 | CreatedOnToolsVersion = 7.3; 190 | }; 191 | 3C93AD561CC875D600FE6260 = { 192 | CreatedOnToolsVersion = 7.3; 193 | TestTargetID = 3C93AD421CC875D600FE6260; 194 | }; 195 | }; 196 | }; 197 | buildConfigurationList = 3C93AD3E1CC875D600FE6260 /* Build configuration list for PBXProject "SettingsAppAccessCocoapodExample" */; 198 | compatibilityVersion = "Xcode 3.2"; 199 | developmentRegion = English; 200 | hasScannedForEncodings = 0; 201 | knownRegions = ( 202 | en, 203 | Base, 204 | ); 205 | mainGroup = 3C93AD3A1CC875D600FE6260; 206 | productRefGroup = 3C93AD441CC875D600FE6260 /* Products */; 207 | projectDirPath = ""; 208 | projectRoot = ""; 209 | targets = ( 210 | 3C93AD421CC875D600FE6260 /* SettingsAppAccessCocoapodExample */, 211 | 3C93AD561CC875D600FE6260 /* SettingsAppAccessCocoapodExampleUITests */, 212 | ); 213 | }; 214 | /* End PBXProject section */ 215 | 216 | /* Begin PBXResourcesBuildPhase section */ 217 | 3C93AD411CC875D600FE6260 /* Resources */ = { 218 | isa = PBXResourcesBuildPhase; 219 | buildActionMask = 2147483647; 220 | files = ( 221 | 3C93AD821CC8766000FE6260 /* Info.plist in Resources */, 222 | 3C93AD811CC8766000FE6260 /* Main.storyboard in Resources */, 223 | 3C93AD7F1CC8766000FE6260 /* Assets.xcassets in Resources */, 224 | 3C93AD801CC8766000FE6260 /* LaunchScreen.storyboard in Resources */, 225 | ); 226 | runOnlyForDeploymentPostprocessing = 0; 227 | }; 228 | 3C93AD551CC875D600FE6260 /* Resources */ = { 229 | isa = PBXResourcesBuildPhase; 230 | buildActionMask = 2147483647; 231 | files = ( 232 | 3C93AD891CC8774C00FE6260 /* Info.plist in Resources */, 233 | ); 234 | runOnlyForDeploymentPostprocessing = 0; 235 | }; 236 | /* End PBXResourcesBuildPhase section */ 237 | 238 | /* Begin PBXShellScriptBuildPhase section */ 239 | 7D909F8066D916E7D3792093 /* Embed Pods Frameworks */ = { 240 | isa = PBXShellScriptBuildPhase; 241 | buildActionMask = 2147483647; 242 | files = ( 243 | ); 244 | inputPaths = ( 245 | ); 246 | name = "Embed Pods Frameworks"; 247 | outputPaths = ( 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | shellPath = /bin/sh; 251 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SettingsAppAccessCocoapodExample/Pods-SettingsAppAccessCocoapodExample-frameworks.sh\"\n"; 252 | showEnvVarsInLog = 0; 253 | }; 254 | 83849164261234A735E0162C /* Check Pods Manifest.lock */ = { 255 | isa = PBXShellScriptBuildPhase; 256 | buildActionMask = 2147483647; 257 | files = ( 258 | ); 259 | inputPaths = ( 260 | ); 261 | name = "Check Pods Manifest.lock"; 262 | outputPaths = ( 263 | ); 264 | runOnlyForDeploymentPostprocessing = 0; 265 | shellPath = /bin/sh; 266 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 267 | showEnvVarsInLog = 0; 268 | }; 269 | F26368F22C7A346A1DC9033E /* Copy Pods Resources */ = { 270 | isa = PBXShellScriptBuildPhase; 271 | buildActionMask = 2147483647; 272 | files = ( 273 | ); 274 | inputPaths = ( 275 | ); 276 | name = "Copy Pods Resources"; 277 | outputPaths = ( 278 | ); 279 | runOnlyForDeploymentPostprocessing = 0; 280 | shellPath = /bin/sh; 281 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SettingsAppAccessCocoapodExample/Pods-SettingsAppAccessCocoapodExample-resources.sh\"\n"; 282 | showEnvVarsInLog = 0; 283 | }; 284 | /* End PBXShellScriptBuildPhase section */ 285 | 286 | /* Begin PBXSourcesBuildPhase section */ 287 | 3C93AD3F1CC875D600FE6260 /* Sources */ = { 288 | isa = PBXSourcesBuildPhase; 289 | buildActionMask = 2147483647; 290 | files = ( 291 | 3C93AD831CC8766000FE6260 /* ViewController.swift in Sources */, 292 | 3C93AD7E1CC8766000FE6260 /* AppDelegate.swift in Sources */, 293 | ); 294 | runOnlyForDeploymentPostprocessing = 0; 295 | }; 296 | 3C93AD531CC875D600FE6260 /* Sources */ = { 297 | isa = PBXSourcesBuildPhase; 298 | buildActionMask = 2147483647; 299 | files = ( 300 | 3C93AD881CC8774500FE6260 /* SettingsAppAccessExampleUITests.swift in Sources */, 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | }; 304 | /* End PBXSourcesBuildPhase section */ 305 | 306 | /* Begin PBXTargetDependency section */ 307 | 3C93AD591CC875D600FE6260 /* PBXTargetDependency */ = { 308 | isa = PBXTargetDependency; 309 | target = 3C93AD421CC875D600FE6260 /* SettingsAppAccessCocoapodExample */; 310 | targetProxy = 3C93AD581CC875D600FE6260 /* PBXContainerItemProxy */; 311 | }; 312 | /* End PBXTargetDependency section */ 313 | 314 | /* Begin PBXVariantGroup section */ 315 | 3C93AD781CC8766000FE6260 /* LaunchScreen.storyboard */ = { 316 | isa = PBXVariantGroup; 317 | children = ( 318 | 3C93AD791CC8766000FE6260 /* Base */, 319 | ); 320 | name = LaunchScreen.storyboard; 321 | sourceTree = ""; 322 | }; 323 | 3C93AD7A1CC8766000FE6260 /* Main.storyboard */ = { 324 | isa = PBXVariantGroup; 325 | children = ( 326 | 3C93AD7B1CC8766000FE6260 /* Base */, 327 | ); 328 | name = Main.storyboard; 329 | sourceTree = ""; 330 | }; 331 | /* End PBXVariantGroup section */ 332 | 333 | /* Begin XCBuildConfiguration section */ 334 | 3C93AD5E1CC875D600FE6260 /* Debug */ = { 335 | isa = XCBuildConfiguration; 336 | buildSettings = { 337 | ALWAYS_SEARCH_USER_PATHS = NO; 338 | CLANG_ANALYZER_NONNULL = YES; 339 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 340 | CLANG_CXX_LIBRARY = "libc++"; 341 | CLANG_ENABLE_MODULES = YES; 342 | CLANG_ENABLE_OBJC_ARC = YES; 343 | CLANG_WARN_BOOL_CONVERSION = YES; 344 | CLANG_WARN_CONSTANT_CONVERSION = YES; 345 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 346 | CLANG_WARN_EMPTY_BODY = YES; 347 | CLANG_WARN_ENUM_CONVERSION = YES; 348 | CLANG_WARN_INT_CONVERSION = YES; 349 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 350 | CLANG_WARN_UNREACHABLE_CODE = YES; 351 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 352 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 353 | COPY_PHASE_STRIP = NO; 354 | DEBUG_INFORMATION_FORMAT = dwarf; 355 | ENABLE_STRICT_OBJC_MSGSEND = YES; 356 | ENABLE_TESTABILITY = YES; 357 | GCC_C_LANGUAGE_STANDARD = gnu99; 358 | GCC_DYNAMIC_NO_PIC = NO; 359 | GCC_NO_COMMON_BLOCKS = YES; 360 | GCC_OPTIMIZATION_LEVEL = 0; 361 | GCC_PREPROCESSOR_DEFINITIONS = ( 362 | "DEBUG=1", 363 | "$(inherited)", 364 | ); 365 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 366 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 367 | GCC_WARN_UNDECLARED_SELECTOR = YES; 368 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 369 | GCC_WARN_UNUSED_FUNCTION = YES; 370 | GCC_WARN_UNUSED_VARIABLE = YES; 371 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 372 | MTL_ENABLE_DEBUG_INFO = YES; 373 | ONLY_ACTIVE_ARCH = YES; 374 | SDKROOT = iphoneos; 375 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 376 | TARGETED_DEVICE_FAMILY = "1,2"; 377 | }; 378 | name = Debug; 379 | }; 380 | 3C93AD5F1CC875D600FE6260 /* Release */ = { 381 | isa = XCBuildConfiguration; 382 | buildSettings = { 383 | ALWAYS_SEARCH_USER_PATHS = NO; 384 | CLANG_ANALYZER_NONNULL = YES; 385 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 386 | CLANG_CXX_LIBRARY = "libc++"; 387 | CLANG_ENABLE_MODULES = YES; 388 | CLANG_ENABLE_OBJC_ARC = YES; 389 | CLANG_WARN_BOOL_CONVERSION = YES; 390 | CLANG_WARN_CONSTANT_CONVERSION = YES; 391 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 392 | CLANG_WARN_EMPTY_BODY = YES; 393 | CLANG_WARN_ENUM_CONVERSION = YES; 394 | CLANG_WARN_INT_CONVERSION = YES; 395 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 396 | CLANG_WARN_UNREACHABLE_CODE = YES; 397 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 398 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 399 | COPY_PHASE_STRIP = NO; 400 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 401 | ENABLE_NS_ASSERTIONS = NO; 402 | ENABLE_STRICT_OBJC_MSGSEND = YES; 403 | GCC_C_LANGUAGE_STANDARD = gnu99; 404 | GCC_NO_COMMON_BLOCKS = YES; 405 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 406 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 407 | GCC_WARN_UNDECLARED_SELECTOR = YES; 408 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 409 | GCC_WARN_UNUSED_FUNCTION = YES; 410 | GCC_WARN_UNUSED_VARIABLE = YES; 411 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 412 | MTL_ENABLE_DEBUG_INFO = NO; 413 | SDKROOT = iphoneos; 414 | TARGETED_DEVICE_FAMILY = "1,2"; 415 | VALIDATE_PRODUCT = YES; 416 | }; 417 | name = Release; 418 | }; 419 | 3C93AD611CC875D600FE6260 /* Debug */ = { 420 | isa = XCBuildConfiguration; 421 | baseConfigurationReference = ED33F6E06AFA0A689FF1D94D /* Pods-SettingsAppAccessCocoapodExample.debug.xcconfig */; 422 | buildSettings = { 423 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 424 | CLANG_ENABLE_MODULES = YES; 425 | INFOPLIST_FILE = "$(SRCROOT)/../SettingsAppAccessExample/Info.plist"; 426 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 427 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessCocoapodExample; 428 | PRODUCT_NAME = "$(TARGET_NAME)"; 429 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 430 | }; 431 | name = Debug; 432 | }; 433 | 3C93AD621CC875D600FE6260 /* Release */ = { 434 | isa = XCBuildConfiguration; 435 | baseConfigurationReference = 19EE52168EBD878A6B5E9328 /* Pods-SettingsAppAccessCocoapodExample.release.xcconfig */; 436 | buildSettings = { 437 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 438 | CLANG_ENABLE_MODULES = YES; 439 | INFOPLIST_FILE = "$(SRCROOT)/../SettingsAppAccessExample/Info.plist"; 440 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 441 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessCocoapodExample; 442 | PRODUCT_NAME = "$(TARGET_NAME)"; 443 | }; 444 | name = Release; 445 | }; 446 | 3C93AD641CC875D600FE6260 /* Debug */ = { 447 | isa = XCBuildConfiguration; 448 | buildSettings = { 449 | INFOPLIST_FILE = ../SettingsAppAccessExampleUITests/Info.plist; 450 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 451 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessCocoapodExampleUITests; 452 | PRODUCT_NAME = "$(TARGET_NAME)"; 453 | TEST_TARGET_NAME = SettingsAppAccessCocoapodExample; 454 | }; 455 | name = Debug; 456 | }; 457 | 3C93AD651CC875D600FE6260 /* Release */ = { 458 | isa = XCBuildConfiguration; 459 | buildSettings = { 460 | INFOPLIST_FILE = ../SettingsAppAccessExampleUITests/Info.plist; 461 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 462 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessCocoapodExampleUITests; 463 | PRODUCT_NAME = "$(TARGET_NAME)"; 464 | TEST_TARGET_NAME = SettingsAppAccessCocoapodExample; 465 | }; 466 | name = Release; 467 | }; 468 | /* End XCBuildConfiguration section */ 469 | 470 | /* Begin XCConfigurationList section */ 471 | 3C93AD3E1CC875D600FE6260 /* Build configuration list for PBXProject "SettingsAppAccessCocoapodExample" */ = { 472 | isa = XCConfigurationList; 473 | buildConfigurations = ( 474 | 3C93AD5E1CC875D600FE6260 /* Debug */, 475 | 3C93AD5F1CC875D600FE6260 /* Release */, 476 | ); 477 | defaultConfigurationIsVisible = 0; 478 | defaultConfigurationName = Release; 479 | }; 480 | 3C93AD601CC875D600FE6260 /* Build configuration list for PBXNativeTarget "SettingsAppAccessCocoapodExample" */ = { 481 | isa = XCConfigurationList; 482 | buildConfigurations = ( 483 | 3C93AD611CC875D600FE6260 /* Debug */, 484 | 3C93AD621CC875D600FE6260 /* Release */, 485 | ); 486 | defaultConfigurationIsVisible = 0; 487 | defaultConfigurationName = Release; 488 | }; 489 | 3C93AD631CC875D600FE6260 /* Build configuration list for PBXNativeTarget "SettingsAppAccessCocoapodExampleUITests" */ = { 490 | isa = XCConfigurationList; 491 | buildConfigurations = ( 492 | 3C93AD641CC875D600FE6260 /* Debug */, 493 | 3C93AD651CC875D600FE6260 /* Release */, 494 | ); 495 | defaultConfigurationIsVisible = 0; 496 | defaultConfigurationName = Release; 497 | }; 498 | /* End XCConfigurationList section */ 499 | }; 500 | rootObject = 3C93AD3B1CC875D600FE6260 /* Project object */; 501 | } 502 | -------------------------------------------------------------------------------- /SettingsAppAccess.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 3C4E07121CC82E3800FDC312 /* SettingsAppAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C4E07111CC82E3800FDC312 /* SettingsAppAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 3C4E071C1CC82ECD00FDC312 /* UIApplication+SettingsAppAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C4E071B1CC82ECD00FDC312 /* UIApplication+SettingsAppAccess.swift */; }; 12 | 3C4E07241CC8376400FDC312 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C4E07231CC8376400FDC312 /* AppDelegate.swift */; }; 13 | 3C4E07261CC8376400FDC312 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C4E07251CC8376400FDC312 /* ViewController.swift */; }; 14 | 3C4E07291CC8376400FDC312 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C4E07271CC8376400FDC312 /* Main.storyboard */; }; 15 | 3C4E072B1CC8376400FDC312 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3C4E072A1CC8376400FDC312 /* Assets.xcassets */; }; 16 | 3C4E072E1CC8376400FDC312 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C4E072C1CC8376400FDC312 /* LaunchScreen.storyboard */; }; 17 | 3C4E07391CC8376400FDC312 /* SettingsAppAccessExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C4E07381CC8376400FDC312 /* SettingsAppAccessExampleUITests.swift */; }; 18 | 3C5396181CC83F80004F4C79 /* SettingsAppAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C4E070E1CC82E3800FDC312 /* SettingsAppAccess.framework */; }; 19 | 3C5396191CC83F80004F4C79 /* SettingsAppAccess.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3C4E070E1CC82E3800FDC312 /* SettingsAppAccess.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 20 | 3C5396221CC85520004F4C79 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3C5396201CC85520004F4C79 /* Localizable.strings */; }; 21 | 3C5396231CC85FDA004F4C79 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3C5396201CC85520004F4C79 /* Localizable.strings */; }; 22 | 3C93AD311CC86DE500FE6260 /* SettingsAppAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C93AD301CC86DE500FE6260 /* SettingsAppAccess.swift */; }; 23 | 3C93AD361CC8740700FE6260 /* CHANGELOG.md in Sources */ = {isa = PBXBuildFile; fileRef = 3C93AD321CC8740700FE6260 /* CHANGELOG.md */; }; 24 | 3C93AD371CC8740700FE6260 /* LICENSE.md in Sources */ = {isa = PBXBuildFile; fileRef = 3C93AD331CC8740700FE6260 /* LICENSE.md */; }; 25 | 3C93AD381CC8740700FE6260 /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = 3C93AD341CC8740700FE6260 /* README.md */; }; 26 | 3C93AD391CC8740700FE6260 /* SettingsAppAccess.podspec in Resources */ = {isa = PBXBuildFile; fileRef = 3C93AD351CC8740700FE6260 /* SettingsAppAccess.podspec */; }; 27 | 5AFC3CB11D7D63FE008282B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5AFC3CAF1D7D63FE008282B8 /* Localizable.strings */; }; 28 | 5AFC3CB51D7D6411008282B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5AFC3CB31D7D6411008282B8 /* Localizable.strings */; }; 29 | 5AFC3CBD1D7D74E1008282B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5AFC3CBB1D7D74E1008282B8 /* Localizable.strings */; }; 30 | /* End PBXBuildFile section */ 31 | 32 | /* Begin PBXContainerItemProxy section */ 33 | 3C4E07351CC8376400FDC312 /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = 3C4E07051CC82E3800FDC312 /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = 3C4E07201CC8376400FDC312; 38 | remoteInfo = SettingsAppAccessExample; 39 | }; 40 | 3C53961A1CC83F80004F4C79 /* PBXContainerItemProxy */ = { 41 | isa = PBXContainerItemProxy; 42 | containerPortal = 3C4E07051CC82E3800FDC312 /* Project object */; 43 | proxyType = 1; 44 | remoteGlobalIDString = 3C4E070D1CC82E3800FDC312; 45 | remoteInfo = SettingsAppAccess; 46 | }; 47 | /* End PBXContainerItemProxy section */ 48 | 49 | /* Begin PBXCopyFilesBuildPhase section */ 50 | 3C53961C1CC83F80004F4C79 /* Embed Frameworks */ = { 51 | isa = PBXCopyFilesBuildPhase; 52 | buildActionMask = 2147483647; 53 | dstPath = ""; 54 | dstSubfolderSpec = 10; 55 | files = ( 56 | 3C5396191CC83F80004F4C79 /* SettingsAppAccess.framework in Embed Frameworks */, 57 | ); 58 | name = "Embed Frameworks"; 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | /* End PBXCopyFilesBuildPhase section */ 62 | 63 | /* Begin PBXFileReference section */ 64 | 3C4E070E1CC82E3800FDC312 /* SettingsAppAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SettingsAppAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 65 | 3C4E07111CC82E3800FDC312 /* SettingsAppAccess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsAppAccess.h; sourceTree = ""; }; 66 | 3C4E07131CC82E3800FDC312 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 67 | 3C4E071B1CC82ECD00FDC312 /* UIApplication+SettingsAppAccess.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIApplication+SettingsAppAccess.swift"; sourceTree = ""; }; 68 | 3C4E07211CC8376400FDC312 /* SettingsAppAccessExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SettingsAppAccessExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 69 | 3C4E07231CC8376400FDC312 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 70 | 3C4E07251CC8376400FDC312 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 71 | 3C4E07281CC8376400FDC312 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 72 | 3C4E072A1CC8376400FDC312 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 73 | 3C4E072D1CC8376400FDC312 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 74 | 3C4E072F1CC8376400FDC312 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 75 | 3C4E07341CC8376400FDC312 /* SettingsAppAccessExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SettingsAppAccessExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 76 | 3C4E07381CC8376400FDC312 /* SettingsAppAccessExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAppAccessExampleUITests.swift; sourceTree = ""; }; 77 | 3C4E073A1CC8376400FDC312 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 78 | 3C5396211CC85520004F4C79 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = ""; }; 79 | 3C93AD301CC86DE500FE6260 /* SettingsAppAccess.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppAccess.swift; sourceTree = ""; }; 80 | 3C93AD321CC8740700FE6260 /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; }; 81 | 3C93AD331CC8740700FE6260 /* LICENSE.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; 82 | 3C93AD341CC8740700FE6260 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 83 | 3C93AD351CC8740700FE6260 /* SettingsAppAccess.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SettingsAppAccess.podspec; sourceTree = ""; }; 84 | 5AFC3CAA1D7D5EA5008282B8 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; 85 | 5AFC3CAB1D7D5EA5008282B8 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = ""; }; 86 | 5AFC3CAC1D7D6336008282B8 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Main.strings"; sourceTree = ""; }; 87 | 5AFC3CAD1D7D6336008282B8 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/LaunchScreen.strings"; sourceTree = ""; }; 88 | 5AFC3CB01D7D63FE008282B8 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = Localizable.strings; sourceTree = ""; }; 89 | 5AFC3CB41D7D6411008282B8 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = Localizable.strings; sourceTree = ""; }; 90 | 5AFC3CB81D7D74B8008282B8 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Main.strings; sourceTree = ""; }; 91 | 5AFC3CB91D7D74B8008282B8 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/LaunchScreen.strings; sourceTree = ""; }; 92 | 5AFC3CBC1D7D74E1008282B8 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = Localizable.strings; sourceTree = ""; }; 93 | /* End PBXFileReference section */ 94 | 95 | /* Begin PBXFrameworksBuildPhase section */ 96 | 3C4E070A1CC82E3800FDC312 /* Frameworks */ = { 97 | isa = PBXFrameworksBuildPhase; 98 | buildActionMask = 2147483647; 99 | files = ( 100 | ); 101 | runOnlyForDeploymentPostprocessing = 0; 102 | }; 103 | 3C4E071E1CC8376400FDC312 /* Frameworks */ = { 104 | isa = PBXFrameworksBuildPhase; 105 | buildActionMask = 2147483647; 106 | files = ( 107 | 3C5396181CC83F80004F4C79 /* SettingsAppAccess.framework in Frameworks */, 108 | ); 109 | runOnlyForDeploymentPostprocessing = 0; 110 | }; 111 | 3C4E07311CC8376400FDC312 /* Frameworks */ = { 112 | isa = PBXFrameworksBuildPhase; 113 | buildActionMask = 2147483647; 114 | files = ( 115 | ); 116 | runOnlyForDeploymentPostprocessing = 0; 117 | }; 118 | /* End PBXFrameworksBuildPhase section */ 119 | 120 | /* Begin PBXGroup section */ 121 | 3C4E07041CC82E3800FDC312 = { 122 | isa = PBXGroup; 123 | children = ( 124 | 3C93AD321CC8740700FE6260 /* CHANGELOG.md */, 125 | 3C93AD331CC8740700FE6260 /* LICENSE.md */, 126 | 3C93AD341CC8740700FE6260 /* README.md */, 127 | 3C93AD351CC8740700FE6260 /* SettingsAppAccess.podspec */, 128 | 3C4E07101CC82E3800FDC312 /* SettingsAppAccess */, 129 | 3C4E07221CC8376400FDC312 /* SettingsAppAccessExample */, 130 | 3C4E07371CC8376400FDC312 /* SettingsAppAccessExampleUITests */, 131 | 3C4E070F1CC82E3800FDC312 /* Products */, 132 | ); 133 | sourceTree = ""; 134 | }; 135 | 3C4E070F1CC82E3800FDC312 /* Products */ = { 136 | isa = PBXGroup; 137 | children = ( 138 | 3C4E070E1CC82E3800FDC312 /* SettingsAppAccess.framework */, 139 | 3C4E07211CC8376400FDC312 /* SettingsAppAccessExample.app */, 140 | 3C4E07341CC8376400FDC312 /* SettingsAppAccessExampleUITests.xctest */, 141 | ); 142 | name = Products; 143 | sourceTree = ""; 144 | }; 145 | 3C4E07101CC82E3800FDC312 /* SettingsAppAccess */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | 3C4E07111CC82E3800FDC312 /* SettingsAppAccess.h */, 149 | 3C4E07131CC82E3800FDC312 /* Info.plist */, 150 | 3C93AD301CC86DE500FE6260 /* SettingsAppAccess.swift */, 151 | 3C4E071B1CC82ECD00FDC312 /* UIApplication+SettingsAppAccess.swift */, 152 | 5AFC3CBA1D7D74E1008282B8 /* ja.lproj */, 153 | 5AFC3CB21D7D6411008282B8 /* zh-Hant.lproj */, 154 | 5AFC3CAE1D7D63FE008282B8 /* zh-Hans.lproj */, 155 | 3C93AD2C1CC8662900FE6260 /* Base.lproj */, 156 | 3C53961F1CC85520004F4C79 /* en.lproj */, 157 | ); 158 | path = SettingsAppAccess; 159 | sourceTree = ""; 160 | }; 161 | 3C4E07221CC8376400FDC312 /* SettingsAppAccessExample */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | 3C4E07231CC8376400FDC312 /* AppDelegate.swift */, 165 | 3C4E07251CC8376400FDC312 /* ViewController.swift */, 166 | 3C4E07271CC8376400FDC312 /* Main.storyboard */, 167 | 3C4E072A1CC8376400FDC312 /* Assets.xcassets */, 168 | 3C4E072C1CC8376400FDC312 /* LaunchScreen.storyboard */, 169 | 3C4E072F1CC8376400FDC312 /* Info.plist */, 170 | ); 171 | path = SettingsAppAccessExample; 172 | sourceTree = ""; 173 | }; 174 | 3C4E07371CC8376400FDC312 /* SettingsAppAccessExampleUITests */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | 3C4E07381CC8376400FDC312 /* SettingsAppAccessExampleUITests.swift */, 178 | 3C4E073A1CC8376400FDC312 /* Info.plist */, 179 | ); 180 | path = SettingsAppAccessExampleUITests; 181 | sourceTree = ""; 182 | }; 183 | 3C53961F1CC85520004F4C79 /* en.lproj */ = { 184 | isa = PBXGroup; 185 | children = ( 186 | 3C5396201CC85520004F4C79 /* Localizable.strings */, 187 | ); 188 | path = en.lproj; 189 | sourceTree = ""; 190 | }; 191 | 3C93AD2C1CC8662900FE6260 /* Base.lproj */ = { 192 | isa = PBXGroup; 193 | children = ( 194 | ); 195 | path = Base.lproj; 196 | sourceTree = ""; 197 | }; 198 | 5AFC3CAE1D7D63FE008282B8 /* zh-Hans.lproj */ = { 199 | isa = PBXGroup; 200 | children = ( 201 | 5AFC3CAF1D7D63FE008282B8 /* Localizable.strings */, 202 | ); 203 | path = "zh-Hans.lproj"; 204 | sourceTree = ""; 205 | }; 206 | 5AFC3CB21D7D6411008282B8 /* zh-Hant.lproj */ = { 207 | isa = PBXGroup; 208 | children = ( 209 | 5AFC3CB31D7D6411008282B8 /* Localizable.strings */, 210 | ); 211 | path = "zh-Hant.lproj"; 212 | sourceTree = ""; 213 | }; 214 | 5AFC3CBA1D7D74E1008282B8 /* ja.lproj */ = { 215 | isa = PBXGroup; 216 | children = ( 217 | 5AFC3CBB1D7D74E1008282B8 /* Localizable.strings */, 218 | ); 219 | path = ja.lproj; 220 | sourceTree = ""; 221 | }; 222 | /* End PBXGroup section */ 223 | 224 | /* Begin PBXHeadersBuildPhase section */ 225 | 3C4E070B1CC82E3800FDC312 /* Headers */ = { 226 | isa = PBXHeadersBuildPhase; 227 | buildActionMask = 2147483647; 228 | files = ( 229 | 3C4E07121CC82E3800FDC312 /* SettingsAppAccess.h in Headers */, 230 | ); 231 | runOnlyForDeploymentPostprocessing = 0; 232 | }; 233 | /* End PBXHeadersBuildPhase section */ 234 | 235 | /* Begin PBXNativeTarget section */ 236 | 3C4E070D1CC82E3800FDC312 /* SettingsAppAccess */ = { 237 | isa = PBXNativeTarget; 238 | buildConfigurationList = 3C4E07161CC82E3800FDC312 /* Build configuration list for PBXNativeTarget "SettingsAppAccess" */; 239 | buildPhases = ( 240 | 3C4E07091CC82E3800FDC312 /* Sources */, 241 | 3C4E070A1CC82E3800FDC312 /* Frameworks */, 242 | 3C4E070B1CC82E3800FDC312 /* Headers */, 243 | 3C4E070C1CC82E3800FDC312 /* Resources */, 244 | ); 245 | buildRules = ( 246 | ); 247 | dependencies = ( 248 | ); 249 | name = SettingsAppAccess; 250 | productName = SettingsAppAccess; 251 | productReference = 3C4E070E1CC82E3800FDC312 /* SettingsAppAccess.framework */; 252 | productType = "com.apple.product-type.framework"; 253 | }; 254 | 3C4E07201CC8376400FDC312 /* SettingsAppAccessExample */ = { 255 | isa = PBXNativeTarget; 256 | buildConfigurationList = 3C4E073B1CC8376400FDC312 /* Build configuration list for PBXNativeTarget "SettingsAppAccessExample" */; 257 | buildPhases = ( 258 | 3C4E071D1CC8376400FDC312 /* Sources */, 259 | 3C4E071E1CC8376400FDC312 /* Frameworks */, 260 | 3C4E071F1CC8376400FDC312 /* Resources */, 261 | 3C53961C1CC83F80004F4C79 /* Embed Frameworks */, 262 | ); 263 | buildRules = ( 264 | ); 265 | dependencies = ( 266 | 3C53961B1CC83F80004F4C79 /* PBXTargetDependency */, 267 | ); 268 | name = SettingsAppAccessExample; 269 | productName = SettingsAppAccessExample; 270 | productReference = 3C4E07211CC8376400FDC312 /* SettingsAppAccessExample.app */; 271 | productType = "com.apple.product-type.application"; 272 | }; 273 | 3C4E07331CC8376400FDC312 /* SettingsAppAccessExampleUITests */ = { 274 | isa = PBXNativeTarget; 275 | buildConfigurationList = 3C4E073E1CC8376400FDC312 /* Build configuration list for PBXNativeTarget "SettingsAppAccessExampleUITests" */; 276 | buildPhases = ( 277 | 3C4E07301CC8376400FDC312 /* Sources */, 278 | 3C4E07311CC8376400FDC312 /* Frameworks */, 279 | 3C4E07321CC8376400FDC312 /* Resources */, 280 | ); 281 | buildRules = ( 282 | ); 283 | dependencies = ( 284 | 3C4E07361CC8376400FDC312 /* PBXTargetDependency */, 285 | ); 286 | name = SettingsAppAccessExampleUITests; 287 | productName = SettingsAppAccessExampleUITests; 288 | productReference = 3C4E07341CC8376400FDC312 /* SettingsAppAccessExampleUITests.xctest */; 289 | productType = "com.apple.product-type.bundle.ui-testing"; 290 | }; 291 | /* End PBXNativeTarget section */ 292 | 293 | /* Begin PBXProject section */ 294 | 3C4E07051CC82E3800FDC312 /* Project object */ = { 295 | isa = PBXProject; 296 | attributes = { 297 | LastSwiftUpdateCheck = 0730; 298 | LastUpgradeCheck = 0730; 299 | ORGANIZATIONNAME = Adorkable; 300 | TargetAttributes = { 301 | 3C4E070D1CC82E3800FDC312 = { 302 | CreatedOnToolsVersion = 7.3; 303 | }; 304 | 3C4E07201CC8376400FDC312 = { 305 | CreatedOnToolsVersion = 7.3; 306 | }; 307 | 3C4E07331CC8376400FDC312 = { 308 | CreatedOnToolsVersion = 7.3; 309 | TestTargetID = 3C4E07201CC8376400FDC312; 310 | }; 311 | }; 312 | }; 313 | buildConfigurationList = 3C4E07081CC82E3800FDC312 /* Build configuration list for PBXProject "SettingsAppAccess" */; 314 | compatibilityVersion = "Xcode 3.2"; 315 | developmentRegion = English; 316 | hasScannedForEncodings = 0; 317 | knownRegions = ( 318 | en, 319 | Base, 320 | "zh-Hans", 321 | "zh-Hant", 322 | ja, 323 | ); 324 | mainGroup = 3C4E07041CC82E3800FDC312; 325 | productRefGroup = 3C4E070F1CC82E3800FDC312 /* Products */; 326 | projectDirPath = ""; 327 | projectRoot = ""; 328 | targets = ( 329 | 3C4E070D1CC82E3800FDC312 /* SettingsAppAccess */, 330 | 3C4E07201CC8376400FDC312 /* SettingsAppAccessExample */, 331 | 3C4E07331CC8376400FDC312 /* SettingsAppAccessExampleUITests */, 332 | ); 333 | }; 334 | /* End PBXProject section */ 335 | 336 | /* Begin PBXResourcesBuildPhase section */ 337 | 3C4E070C1CC82E3800FDC312 /* Resources */ = { 338 | isa = PBXResourcesBuildPhase; 339 | buildActionMask = 2147483647; 340 | files = ( 341 | 5AFC3CBD1D7D74E1008282B8 /* Localizable.strings in Resources */, 342 | 3C5396221CC85520004F4C79 /* Localizable.strings in Resources */, 343 | 5AFC3CB51D7D6411008282B8 /* Localizable.strings in Resources */, 344 | 5AFC3CB11D7D63FE008282B8 /* Localizable.strings in Resources */, 345 | 3C93AD391CC8740700FE6260 /* SettingsAppAccess.podspec in Resources */, 346 | ); 347 | runOnlyForDeploymentPostprocessing = 0; 348 | }; 349 | 3C4E071F1CC8376400FDC312 /* Resources */ = { 350 | isa = PBXResourcesBuildPhase; 351 | buildActionMask = 2147483647; 352 | files = ( 353 | 3C5396231CC85FDA004F4C79 /* Localizable.strings in Resources */, 354 | 3C4E072E1CC8376400FDC312 /* LaunchScreen.storyboard in Resources */, 355 | 3C4E072B1CC8376400FDC312 /* Assets.xcassets in Resources */, 356 | 3C4E07291CC8376400FDC312 /* Main.storyboard in Resources */, 357 | ); 358 | runOnlyForDeploymentPostprocessing = 0; 359 | }; 360 | 3C4E07321CC8376400FDC312 /* Resources */ = { 361 | isa = PBXResourcesBuildPhase; 362 | buildActionMask = 2147483647; 363 | files = ( 364 | ); 365 | runOnlyForDeploymentPostprocessing = 0; 366 | }; 367 | /* End PBXResourcesBuildPhase section */ 368 | 369 | /* Begin PBXSourcesBuildPhase section */ 370 | 3C4E07091CC82E3800FDC312 /* Sources */ = { 371 | isa = PBXSourcesBuildPhase; 372 | buildActionMask = 2147483647; 373 | files = ( 374 | 3C93AD371CC8740700FE6260 /* LICENSE.md in Sources */, 375 | 3C93AD311CC86DE500FE6260 /* SettingsAppAccess.swift in Sources */, 376 | 3C93AD381CC8740700FE6260 /* README.md in Sources */, 377 | 3C93AD361CC8740700FE6260 /* CHANGELOG.md in Sources */, 378 | 3C4E071C1CC82ECD00FDC312 /* UIApplication+SettingsAppAccess.swift in Sources */, 379 | ); 380 | runOnlyForDeploymentPostprocessing = 0; 381 | }; 382 | 3C4E071D1CC8376400FDC312 /* Sources */ = { 383 | isa = PBXSourcesBuildPhase; 384 | buildActionMask = 2147483647; 385 | files = ( 386 | 3C4E07261CC8376400FDC312 /* ViewController.swift in Sources */, 387 | 3C4E07241CC8376400FDC312 /* AppDelegate.swift in Sources */, 388 | ); 389 | runOnlyForDeploymentPostprocessing = 0; 390 | }; 391 | 3C4E07301CC8376400FDC312 /* Sources */ = { 392 | isa = PBXSourcesBuildPhase; 393 | buildActionMask = 2147483647; 394 | files = ( 395 | 3C4E07391CC8376400FDC312 /* SettingsAppAccessExampleUITests.swift in Sources */, 396 | ); 397 | runOnlyForDeploymentPostprocessing = 0; 398 | }; 399 | /* End PBXSourcesBuildPhase section */ 400 | 401 | /* Begin PBXTargetDependency section */ 402 | 3C4E07361CC8376400FDC312 /* PBXTargetDependency */ = { 403 | isa = PBXTargetDependency; 404 | target = 3C4E07201CC8376400FDC312 /* SettingsAppAccessExample */; 405 | targetProxy = 3C4E07351CC8376400FDC312 /* PBXContainerItemProxy */; 406 | }; 407 | 3C53961B1CC83F80004F4C79 /* PBXTargetDependency */ = { 408 | isa = PBXTargetDependency; 409 | target = 3C4E070D1CC82E3800FDC312 /* SettingsAppAccess */; 410 | targetProxy = 3C53961A1CC83F80004F4C79 /* PBXContainerItemProxy */; 411 | }; 412 | /* End PBXTargetDependency section */ 413 | 414 | /* Begin PBXVariantGroup section */ 415 | 3C4E07271CC8376400FDC312 /* Main.storyboard */ = { 416 | isa = PBXVariantGroup; 417 | children = ( 418 | 3C4E07281CC8376400FDC312 /* Base */, 419 | 5AFC3CAA1D7D5EA5008282B8 /* zh-Hans */, 420 | 5AFC3CAC1D7D6336008282B8 /* zh-Hant */, 421 | 5AFC3CB81D7D74B8008282B8 /* ja */, 422 | ); 423 | name = Main.storyboard; 424 | sourceTree = ""; 425 | }; 426 | 3C4E072C1CC8376400FDC312 /* LaunchScreen.storyboard */ = { 427 | isa = PBXVariantGroup; 428 | children = ( 429 | 3C4E072D1CC8376400FDC312 /* Base */, 430 | 5AFC3CAB1D7D5EA5008282B8 /* zh-Hans */, 431 | 5AFC3CAD1D7D6336008282B8 /* zh-Hant */, 432 | 5AFC3CB91D7D74B8008282B8 /* ja */, 433 | ); 434 | name = LaunchScreen.storyboard; 435 | sourceTree = ""; 436 | }; 437 | 3C5396201CC85520004F4C79 /* Localizable.strings */ = { 438 | isa = PBXVariantGroup; 439 | children = ( 440 | 3C5396211CC85520004F4C79 /* en */, 441 | ); 442 | name = Localizable.strings; 443 | sourceTree = ""; 444 | }; 445 | 5AFC3CAF1D7D63FE008282B8 /* Localizable.strings */ = { 446 | isa = PBXVariantGroup; 447 | children = ( 448 | 5AFC3CB01D7D63FE008282B8 /* zh-Hans */, 449 | ); 450 | name = Localizable.strings; 451 | sourceTree = ""; 452 | }; 453 | 5AFC3CB31D7D6411008282B8 /* Localizable.strings */ = { 454 | isa = PBXVariantGroup; 455 | children = ( 456 | 5AFC3CB41D7D6411008282B8 /* zh-Hant */, 457 | ); 458 | name = Localizable.strings; 459 | sourceTree = ""; 460 | }; 461 | 5AFC3CBB1D7D74E1008282B8 /* Localizable.strings */ = { 462 | isa = PBXVariantGroup; 463 | children = ( 464 | 5AFC3CBC1D7D74E1008282B8 /* ja */, 465 | ); 466 | name = Localizable.strings; 467 | sourceTree = ""; 468 | }; 469 | /* End PBXVariantGroup section */ 470 | 471 | /* Begin XCBuildConfiguration section */ 472 | 3C4E07141CC82E3800FDC312 /* Debug */ = { 473 | isa = XCBuildConfiguration; 474 | buildSettings = { 475 | ALWAYS_SEARCH_USER_PATHS = NO; 476 | CLANG_ANALYZER_NONNULL = YES; 477 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 478 | CLANG_CXX_LIBRARY = "libc++"; 479 | CLANG_ENABLE_MODULES = YES; 480 | CLANG_ENABLE_OBJC_ARC = YES; 481 | CLANG_WARN_BOOL_CONVERSION = YES; 482 | CLANG_WARN_CONSTANT_CONVERSION = YES; 483 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 484 | CLANG_WARN_EMPTY_BODY = YES; 485 | CLANG_WARN_ENUM_CONVERSION = YES; 486 | CLANG_WARN_INT_CONVERSION = YES; 487 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 488 | CLANG_WARN_UNREACHABLE_CODE = YES; 489 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 490 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 491 | COPY_PHASE_STRIP = NO; 492 | CURRENT_PROJECT_VERSION = 1; 493 | DEBUG_INFORMATION_FORMAT = dwarf; 494 | ENABLE_STRICT_OBJC_MSGSEND = YES; 495 | ENABLE_TESTABILITY = YES; 496 | GCC_C_LANGUAGE_STANDARD = gnu99; 497 | GCC_DYNAMIC_NO_PIC = NO; 498 | GCC_NO_COMMON_BLOCKS = YES; 499 | GCC_OPTIMIZATION_LEVEL = 0; 500 | GCC_PREPROCESSOR_DEFINITIONS = ( 501 | "DEBUG=1", 502 | "$(inherited)", 503 | ); 504 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 505 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 506 | GCC_WARN_UNDECLARED_SELECTOR = YES; 507 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 508 | GCC_WARN_UNUSED_FUNCTION = YES; 509 | GCC_WARN_UNUSED_VARIABLE = YES; 510 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 511 | MTL_ENABLE_DEBUG_INFO = YES; 512 | ONLY_ACTIVE_ARCH = YES; 513 | SDKROOT = iphoneos; 514 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 515 | TARGETED_DEVICE_FAMILY = "1,2"; 516 | VERSIONING_SYSTEM = "apple-generic"; 517 | VERSION_INFO_PREFIX = ""; 518 | }; 519 | name = Debug; 520 | }; 521 | 3C4E07151CC82E3800FDC312 /* Release */ = { 522 | isa = XCBuildConfiguration; 523 | buildSettings = { 524 | ALWAYS_SEARCH_USER_PATHS = NO; 525 | CLANG_ANALYZER_NONNULL = YES; 526 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 527 | CLANG_CXX_LIBRARY = "libc++"; 528 | CLANG_ENABLE_MODULES = YES; 529 | CLANG_ENABLE_OBJC_ARC = YES; 530 | CLANG_WARN_BOOL_CONVERSION = YES; 531 | CLANG_WARN_CONSTANT_CONVERSION = YES; 532 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 533 | CLANG_WARN_EMPTY_BODY = YES; 534 | CLANG_WARN_ENUM_CONVERSION = YES; 535 | CLANG_WARN_INT_CONVERSION = YES; 536 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 537 | CLANG_WARN_UNREACHABLE_CODE = YES; 538 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 539 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 540 | COPY_PHASE_STRIP = NO; 541 | CURRENT_PROJECT_VERSION = 1; 542 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 543 | ENABLE_NS_ASSERTIONS = NO; 544 | ENABLE_STRICT_OBJC_MSGSEND = YES; 545 | GCC_C_LANGUAGE_STANDARD = gnu99; 546 | GCC_NO_COMMON_BLOCKS = YES; 547 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 548 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 549 | GCC_WARN_UNDECLARED_SELECTOR = YES; 550 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 551 | GCC_WARN_UNUSED_FUNCTION = YES; 552 | GCC_WARN_UNUSED_VARIABLE = YES; 553 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 554 | MTL_ENABLE_DEBUG_INFO = NO; 555 | SDKROOT = iphoneos; 556 | TARGETED_DEVICE_FAMILY = "1,2"; 557 | VALIDATE_PRODUCT = YES; 558 | VERSIONING_SYSTEM = "apple-generic"; 559 | VERSION_INFO_PREFIX = ""; 560 | }; 561 | name = Release; 562 | }; 563 | 3C4E07171CC82E3800FDC312 /* Debug */ = { 564 | isa = XCBuildConfiguration; 565 | buildSettings = { 566 | CLANG_ENABLE_MODULES = YES; 567 | DEFINES_MODULE = YES; 568 | DYLIB_COMPATIBILITY_VERSION = 1; 569 | DYLIB_CURRENT_VERSION = 1; 570 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 571 | INFOPLIST_FILE = SettingsAppAccess/Info.plist; 572 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 573 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 574 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 575 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccess; 576 | PRODUCT_NAME = "$(TARGET_NAME)"; 577 | SKIP_INSTALL = YES; 578 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 579 | }; 580 | name = Debug; 581 | }; 582 | 3C4E07181CC82E3800FDC312 /* Release */ = { 583 | isa = XCBuildConfiguration; 584 | buildSettings = { 585 | CLANG_ENABLE_MODULES = YES; 586 | DEFINES_MODULE = YES; 587 | DYLIB_COMPATIBILITY_VERSION = 1; 588 | DYLIB_CURRENT_VERSION = 1; 589 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 590 | INFOPLIST_FILE = SettingsAppAccess/Info.plist; 591 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 592 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 593 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 594 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccess; 595 | PRODUCT_NAME = "$(TARGET_NAME)"; 596 | SKIP_INSTALL = YES; 597 | }; 598 | name = Release; 599 | }; 600 | 3C4E073C1CC8376400FDC312 /* Debug */ = { 601 | isa = XCBuildConfiguration; 602 | buildSettings = { 603 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 604 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; 605 | INFOPLIST_FILE = SettingsAppAccessExample/Info.plist; 606 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 607 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 608 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessExample; 609 | PRODUCT_NAME = "$(TARGET_NAME)"; 610 | }; 611 | name = Debug; 612 | }; 613 | 3C4E073D1CC8376400FDC312 /* Release */ = { 614 | isa = XCBuildConfiguration; 615 | buildSettings = { 616 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 617 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; 618 | INFOPLIST_FILE = SettingsAppAccessExample/Info.plist; 619 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 620 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 621 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessExample; 622 | PRODUCT_NAME = "$(TARGET_NAME)"; 623 | }; 624 | name = Release; 625 | }; 626 | 3C4E073F1CC8376400FDC312 /* Debug */ = { 627 | isa = XCBuildConfiguration; 628 | buildSettings = { 629 | INFOPLIST_FILE = SettingsAppAccessExampleUITests/Info.plist; 630 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 631 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessExampleUITests; 632 | PRODUCT_NAME = "$(TARGET_NAME)"; 633 | TEST_TARGET_NAME = SettingsAppAccessExample; 634 | }; 635 | name = Debug; 636 | }; 637 | 3C4E07401CC8376400FDC312 /* Release */ = { 638 | isa = XCBuildConfiguration; 639 | buildSettings = { 640 | INFOPLIST_FILE = SettingsAppAccessExampleUITests/Info.plist; 641 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 642 | PRODUCT_BUNDLE_IDENTIFIER = com.adorkable.SettingsAppAccessExampleUITests; 643 | PRODUCT_NAME = "$(TARGET_NAME)"; 644 | TEST_TARGET_NAME = SettingsAppAccessExample; 645 | }; 646 | name = Release; 647 | }; 648 | /* End XCBuildConfiguration section */ 649 | 650 | /* Begin XCConfigurationList section */ 651 | 3C4E07081CC82E3800FDC312 /* Build configuration list for PBXProject "SettingsAppAccess" */ = { 652 | isa = XCConfigurationList; 653 | buildConfigurations = ( 654 | 3C4E07141CC82E3800FDC312 /* Debug */, 655 | 3C4E07151CC82E3800FDC312 /* Release */, 656 | ); 657 | defaultConfigurationIsVisible = 0; 658 | defaultConfigurationName = Release; 659 | }; 660 | 3C4E07161CC82E3800FDC312 /* Build configuration list for PBXNativeTarget "SettingsAppAccess" */ = { 661 | isa = XCConfigurationList; 662 | buildConfigurations = ( 663 | 3C4E07171CC82E3800FDC312 /* Debug */, 664 | 3C4E07181CC82E3800FDC312 /* Release */, 665 | ); 666 | defaultConfigurationIsVisible = 0; 667 | defaultConfigurationName = Release; 668 | }; 669 | 3C4E073B1CC8376400FDC312 /* Build configuration list for PBXNativeTarget "SettingsAppAccessExample" */ = { 670 | isa = XCConfigurationList; 671 | buildConfigurations = ( 672 | 3C4E073C1CC8376400FDC312 /* Debug */, 673 | 3C4E073D1CC8376400FDC312 /* Release */, 674 | ); 675 | defaultConfigurationIsVisible = 0; 676 | defaultConfigurationName = Release; 677 | }; 678 | 3C4E073E1CC8376400FDC312 /* Build configuration list for PBXNativeTarget "SettingsAppAccessExampleUITests" */ = { 679 | isa = XCConfigurationList; 680 | buildConfigurations = ( 681 | 3C4E073F1CC8376400FDC312 /* Debug */, 682 | 3C4E07401CC8376400FDC312 /* Release */, 683 | ); 684 | defaultConfigurationIsVisible = 0; 685 | defaultConfigurationName = Release; 686 | }; 687 | /* End XCConfigurationList section */ 688 | }; 689 | rootObject = 3C4E07051CC82E3800FDC312 /* Project object */; 690 | } 691 | --------------------------------------------------------------------------------