├── 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 | 
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 |
--------------------------------------------------------------------------------