├── .gitignore ├── .ruby-version ├── .travis.yml ├── Carthage └── TAKUUID │ ├── TAKUUID.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ └── TAKUUID.xcscheme │ └── TAKUUID │ ├── Info.plist │ └── TAKUUID.h ├── Classes ├── TAKUUID.h ├── TAKUUIDStorage.h └── TAKUUIDStorage.m ├── Examples ├── .gitignore ├── Podfile ├── TAKUUID.h ├── TAKUUIDSample.xcodeproj │ └── project.pbxproj ├── TAKUUIDSample │ ├── Base.lproj │ │ └── Main.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── Launch Screen.storyboard │ ├── TAKAppDelegate.h │ ├── TAKAppDelegate.m │ ├── TAKUUIDSample-Bridging-Header.h │ ├── TAKUUIDSample-Info.plist │ ├── TAKUUIDSample-Prefix.pch │ ├── TAKUUIDSample.entitlements │ ├── TAKViewController.swift │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── TAKUUIDSampleTests │ ├── TAKUUIDSampleTests-Info.plist │ ├── TAKUUIDSampleTests.m │ └── en.lproj │ │ └── InfoPlist.strings └── TAKUUIDStorage.h ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── Package.swift ├── Podfile ├── README.md ├── TAKUUID.podspec ├── TAKUUID.xcodeproj ├── project.pbxproj └── xcshareddata │ └── xcschemes │ └── TAKUUID.xcscheme ├── TAKUUID ├── AppDelegate.h ├── AppDelegate.m ├── Base.lproj │ ├── LaunchScreen.xib │ └── Main.storyboard ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Info.plist ├── TAKUUID.entitlements ├── ViewController.h ├── ViewController.m └── main.m └── TAKUUIDTests ├── Info.plist └── TAKUUIDTests.m /.gitignore: -------------------------------------------------------------------------------- 1 | ### Xcode ### 2 | build/ 3 | *.pbxuser 4 | !default.pbxuser 5 | *.mode1v3 6 | !default.mode1v3 7 | *.mode2v3 8 | !default.mode2v3 9 | *.perspectivev3 10 | !default.perspectivev3 11 | xcuserdata 12 | *.xccheckout 13 | *.moved-aside 14 | DerivedData 15 | *.xcuserstate 16 | 17 | # CocoaPods 18 | Podfile.lock 19 | Pods/ 20 | *.xcworkspace/ 21 | 22 | # bundle 23 | vendor/ 24 | .bundle 25 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 2.4.1 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: objective-c 2 | osx_image: xcode7.3 3 | cache: 4 | directories: 5 | - vendor/bundle 6 | - Pods 7 | before_install: 8 | - gem install bundler 9 | install: 10 | - brew update && (brew upgrade xctool || true) && xctool --version 11 | - bundle install -j4 --path=vendor/bundle --binstubs=vendor/bin 12 | - bundle exec pod install 13 | xcode_workspace: TAKUUID.xcworkspace 14 | xcode_scheme: TAKUUID 15 | xcode_sdk: iphonesimulator 16 | env: 17 | - XCODE_SDK=iphonesimulator8.1 18 | - XCODE_SDK=iphonesimulator8.2 19 | - XCODE_SDK=iphonesimulator8.3 20 | - XCODE_SDK=iphonesimulator8.4 21 | - XCODE_SDK=iphonesimulator9.0 22 | - XCODE_SDK=iphonesimulator9.1 23 | - XCODE_SDK=iphonesimulator9.2 24 | - XCODE_SDK=iphonesimulator9.3 25 | -------------------------------------------------------------------------------- /Carthage/TAKUUID/TAKUUID.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | EDEE14BE1EF102F600C61D70 /* TAKUUIDStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEE14BC1EF102F600C61D70 /* TAKUUIDStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | EDEE14BF1EF102F600C61D70 /* TAKUUIDStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = EDEE14BD1EF102F600C61D70 /* TAKUUIDStorage.m */; }; 12 | EDEE14C61EF1035300C61D70 /* TAKUUID.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEE14C51EF1035300C61D70 /* TAKUUID.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | /* End PBXBuildFile section */ 14 | 15 | /* Begin PBXFileReference section */ 16 | ED51B6301EF100700036BDFE /* TAKUUID.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TAKUUID.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 17 | ED51B6341EF100700036BDFE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 18 | EDEE14BC1EF102F600C61D70 /* TAKUUIDStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TAKUUIDStorage.h; path = ../../../Classes/TAKUUIDStorage.h; sourceTree = ""; }; 19 | EDEE14BD1EF102F600C61D70 /* TAKUUIDStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TAKUUIDStorage.m; path = ../../../Classes/TAKUUIDStorage.m; sourceTree = ""; }; 20 | EDEE14C51EF1035300C61D70 /* TAKUUID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TAKUUID.h; sourceTree = ""; }; 21 | /* End PBXFileReference section */ 22 | 23 | /* Begin PBXFrameworksBuildPhase section */ 24 | ED51B62C1EF100700036BDFE /* Frameworks */ = { 25 | isa = PBXFrameworksBuildPhase; 26 | buildActionMask = 2147483647; 27 | files = ( 28 | ); 29 | runOnlyForDeploymentPostprocessing = 0; 30 | }; 31 | /* End PBXFrameworksBuildPhase section */ 32 | 33 | /* Begin PBXGroup section */ 34 | ED51B6261EF100700036BDFE = { 35 | isa = PBXGroup; 36 | children = ( 37 | ED51B6321EF100700036BDFE /* TAKUUID */, 38 | ED51B6311EF100700036BDFE /* Products */, 39 | ); 40 | sourceTree = ""; 41 | }; 42 | ED51B6311EF100700036BDFE /* Products */ = { 43 | isa = PBXGroup; 44 | children = ( 45 | ED51B6301EF100700036BDFE /* TAKUUID.framework */, 46 | ); 47 | name = Products; 48 | sourceTree = ""; 49 | }; 50 | ED51B6321EF100700036BDFE /* TAKUUID */ = { 51 | isa = PBXGroup; 52 | children = ( 53 | EDEE14C51EF1035300C61D70 /* TAKUUID.h */, 54 | EDEE14BC1EF102F600C61D70 /* TAKUUIDStorage.h */, 55 | EDEE14BD1EF102F600C61D70 /* TAKUUIDStorage.m */, 56 | ED51B6341EF100700036BDFE /* Info.plist */, 57 | ); 58 | path = TAKUUID; 59 | sourceTree = ""; 60 | }; 61 | /* End PBXGroup section */ 62 | 63 | /* Begin PBXHeadersBuildPhase section */ 64 | ED51B62D1EF100700036BDFE /* Headers */ = { 65 | isa = PBXHeadersBuildPhase; 66 | buildActionMask = 2147483647; 67 | files = ( 68 | EDEE14C61EF1035300C61D70 /* TAKUUID.h in Headers */, 69 | EDEE14BE1EF102F600C61D70 /* TAKUUIDStorage.h in Headers */, 70 | ); 71 | runOnlyForDeploymentPostprocessing = 0; 72 | }; 73 | /* End PBXHeadersBuildPhase section */ 74 | 75 | /* Begin PBXNativeTarget section */ 76 | ED51B62F1EF100700036BDFE /* TAKUUID */ = { 77 | isa = PBXNativeTarget; 78 | buildConfigurationList = ED51B6381EF100700036BDFE /* Build configuration list for PBXNativeTarget "TAKUUID" */; 79 | buildPhases = ( 80 | ED51B62B1EF100700036BDFE /* Sources */, 81 | ED51B62C1EF100700036BDFE /* Frameworks */, 82 | ED51B62D1EF100700036BDFE /* Headers */, 83 | ED51B62E1EF100700036BDFE /* Resources */, 84 | ); 85 | buildRules = ( 86 | ); 87 | dependencies = ( 88 | ); 89 | name = TAKUUID; 90 | productName = TAKUUID; 91 | productReference = ED51B6301EF100700036BDFE /* TAKUUID.framework */; 92 | productType = "com.apple.product-type.framework"; 93 | }; 94 | /* End PBXNativeTarget section */ 95 | 96 | /* Begin PBXProject section */ 97 | ED51B6271EF100700036BDFE /* Project object */ = { 98 | isa = PBXProject; 99 | attributes = { 100 | LastUpgradeCheck = 0830; 101 | ORGANIZATIONNAME = "Koji Murata"; 102 | TargetAttributes = { 103 | ED51B62F1EF100700036BDFE = { 104 | CreatedOnToolsVersion = 8.3.2; 105 | DevelopmentTeam = 8AKT7PFJ2M; 106 | ProvisioningStyle = Automatic; 107 | }; 108 | }; 109 | }; 110 | buildConfigurationList = ED51B62A1EF100700036BDFE /* Build configuration list for PBXProject "TAKUUID" */; 111 | compatibilityVersion = "Xcode 3.2"; 112 | developmentRegion = English; 113 | hasScannedForEncodings = 0; 114 | knownRegions = ( 115 | en, 116 | ); 117 | mainGroup = ED51B6261EF100700036BDFE; 118 | productRefGroup = ED51B6311EF100700036BDFE /* Products */; 119 | projectDirPath = ""; 120 | projectRoot = ""; 121 | targets = ( 122 | ED51B62F1EF100700036BDFE /* TAKUUID */, 123 | ); 124 | }; 125 | /* End PBXProject section */ 126 | 127 | /* Begin PBXResourcesBuildPhase section */ 128 | ED51B62E1EF100700036BDFE /* Resources */ = { 129 | isa = PBXResourcesBuildPhase; 130 | buildActionMask = 2147483647; 131 | files = ( 132 | ); 133 | runOnlyForDeploymentPostprocessing = 0; 134 | }; 135 | /* End PBXResourcesBuildPhase section */ 136 | 137 | /* Begin PBXSourcesBuildPhase section */ 138 | ED51B62B1EF100700036BDFE /* Sources */ = { 139 | isa = PBXSourcesBuildPhase; 140 | buildActionMask = 2147483647; 141 | files = ( 142 | EDEE14BF1EF102F600C61D70 /* TAKUUIDStorage.m in Sources */, 143 | ); 144 | runOnlyForDeploymentPostprocessing = 0; 145 | }; 146 | /* End PBXSourcesBuildPhase section */ 147 | 148 | /* Begin XCBuildConfiguration section */ 149 | ED51B6361EF100700036BDFE /* Debug */ = { 150 | isa = XCBuildConfiguration; 151 | buildSettings = { 152 | ALWAYS_SEARCH_USER_PATHS = NO; 153 | CLANG_ANALYZER_NONNULL = YES; 154 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 155 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 156 | CLANG_CXX_LIBRARY = "libc++"; 157 | CLANG_ENABLE_MODULES = YES; 158 | CLANG_ENABLE_OBJC_ARC = YES; 159 | CLANG_WARN_BOOL_CONVERSION = YES; 160 | CLANG_WARN_CONSTANT_CONVERSION = YES; 161 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 162 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 163 | CLANG_WARN_EMPTY_BODY = YES; 164 | CLANG_WARN_ENUM_CONVERSION = YES; 165 | CLANG_WARN_INFINITE_RECURSION = YES; 166 | CLANG_WARN_INT_CONVERSION = YES; 167 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 168 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 169 | CLANG_WARN_UNREACHABLE_CODE = YES; 170 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 171 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 172 | COPY_PHASE_STRIP = NO; 173 | CURRENT_PROJECT_VERSION = 1; 174 | DEBUG_INFORMATION_FORMAT = dwarf; 175 | ENABLE_STRICT_OBJC_MSGSEND = YES; 176 | ENABLE_TESTABILITY = YES; 177 | GCC_C_LANGUAGE_STANDARD = gnu99; 178 | GCC_DYNAMIC_NO_PIC = NO; 179 | GCC_NO_COMMON_BLOCKS = YES; 180 | GCC_OPTIMIZATION_LEVEL = 0; 181 | GCC_PREPROCESSOR_DEFINITIONS = ( 182 | "DEBUG=1", 183 | "$(inherited)", 184 | ); 185 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 186 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 187 | GCC_WARN_UNDECLARED_SELECTOR = YES; 188 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 189 | GCC_WARN_UNUSED_FUNCTION = YES; 190 | GCC_WARN_UNUSED_VARIABLE = YES; 191 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 192 | MTL_ENABLE_DEBUG_INFO = YES; 193 | ONLY_ACTIVE_ARCH = YES; 194 | SDKROOT = iphoneos; 195 | TARGETED_DEVICE_FAMILY = "1,2"; 196 | VERSIONING_SYSTEM = "apple-generic"; 197 | VERSION_INFO_PREFIX = ""; 198 | }; 199 | name = Debug; 200 | }; 201 | ED51B6371EF100700036BDFE /* Release */ = { 202 | isa = XCBuildConfiguration; 203 | buildSettings = { 204 | ALWAYS_SEARCH_USER_PATHS = NO; 205 | CLANG_ANALYZER_NONNULL = YES; 206 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 207 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 208 | CLANG_CXX_LIBRARY = "libc++"; 209 | CLANG_ENABLE_MODULES = YES; 210 | CLANG_ENABLE_OBJC_ARC = YES; 211 | CLANG_WARN_BOOL_CONVERSION = YES; 212 | CLANG_WARN_CONSTANT_CONVERSION = YES; 213 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 214 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 215 | CLANG_WARN_EMPTY_BODY = YES; 216 | CLANG_WARN_ENUM_CONVERSION = YES; 217 | CLANG_WARN_INFINITE_RECURSION = YES; 218 | CLANG_WARN_INT_CONVERSION = YES; 219 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 220 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 221 | CLANG_WARN_UNREACHABLE_CODE = YES; 222 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 223 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 224 | COPY_PHASE_STRIP = NO; 225 | CURRENT_PROJECT_VERSION = 1; 226 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 227 | ENABLE_NS_ASSERTIONS = NO; 228 | ENABLE_STRICT_OBJC_MSGSEND = YES; 229 | GCC_C_LANGUAGE_STANDARD = gnu99; 230 | GCC_NO_COMMON_BLOCKS = YES; 231 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 232 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 233 | GCC_WARN_UNDECLARED_SELECTOR = YES; 234 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 235 | GCC_WARN_UNUSED_FUNCTION = YES; 236 | GCC_WARN_UNUSED_VARIABLE = YES; 237 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 238 | MTL_ENABLE_DEBUG_INFO = NO; 239 | SDKROOT = iphoneos; 240 | TARGETED_DEVICE_FAMILY = "1,2"; 241 | VALIDATE_PRODUCT = YES; 242 | VERSIONING_SYSTEM = "apple-generic"; 243 | VERSION_INFO_PREFIX = ""; 244 | }; 245 | name = Release; 246 | }; 247 | ED51B6391EF100700036BDFE /* Debug */ = { 248 | isa = XCBuildConfiguration; 249 | buildSettings = { 250 | CODE_SIGN_IDENTITY = ""; 251 | DEFINES_MODULE = YES; 252 | DEVELOPMENT_TEAM = 8AKT7PFJ2M; 253 | DYLIB_COMPATIBILITY_VERSION = 1; 254 | DYLIB_CURRENT_VERSION = 1; 255 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 256 | INFOPLIST_FILE = TAKUUID/Info.plist; 257 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 258 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 259 | PRODUCT_BUNDLE_IDENTIFIER = jp.koji.murata.TAKUUID; 260 | PRODUCT_NAME = "$(TARGET_NAME)"; 261 | SKIP_INSTALL = YES; 262 | }; 263 | name = Debug; 264 | }; 265 | ED51B63A1EF100700036BDFE /* Release */ = { 266 | isa = XCBuildConfiguration; 267 | buildSettings = { 268 | CODE_SIGN_IDENTITY = ""; 269 | DEFINES_MODULE = YES; 270 | DEVELOPMENT_TEAM = 8AKT7PFJ2M; 271 | DYLIB_COMPATIBILITY_VERSION = 1; 272 | DYLIB_CURRENT_VERSION = 1; 273 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 274 | INFOPLIST_FILE = TAKUUID/Info.plist; 275 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 276 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 277 | PRODUCT_BUNDLE_IDENTIFIER = jp.koji.murata.TAKUUID; 278 | PRODUCT_NAME = "$(TARGET_NAME)"; 279 | SKIP_INSTALL = YES; 280 | }; 281 | name = Release; 282 | }; 283 | /* End XCBuildConfiguration section */ 284 | 285 | /* Begin XCConfigurationList section */ 286 | ED51B62A1EF100700036BDFE /* Build configuration list for PBXProject "TAKUUID" */ = { 287 | isa = XCConfigurationList; 288 | buildConfigurations = ( 289 | ED51B6361EF100700036BDFE /* Debug */, 290 | ED51B6371EF100700036BDFE /* Release */, 291 | ); 292 | defaultConfigurationIsVisible = 0; 293 | defaultConfigurationName = Release; 294 | }; 295 | ED51B6381EF100700036BDFE /* Build configuration list for PBXNativeTarget "TAKUUID" */ = { 296 | isa = XCConfigurationList; 297 | buildConfigurations = ( 298 | ED51B6391EF100700036BDFE /* Debug */, 299 | ED51B63A1EF100700036BDFE /* Release */, 300 | ); 301 | defaultConfigurationIsVisible = 0; 302 | defaultConfigurationName = Release; 303 | }; 304 | /* End XCConfigurationList section */ 305 | }; 306 | rootObject = ED51B6271EF100700036BDFE /* Project object */; 307 | } 308 | -------------------------------------------------------------------------------- /Carthage/TAKUUID/TAKUUID.xcodeproj/xcshareddata/xcschemes/TAKUUID.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 | -------------------------------------------------------------------------------- /Carthage/TAKUUID/TAKUUID/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 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Carthage/TAKUUID/TAKUUID/TAKUUID.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAKUUID.h 3 | // TAKUUID 4 | // 5 | // Created by Koji Murata on 2017/06/14. 6 | // Copyright © 2017年 Koji Murata. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for TAKUUID. 12 | FOUNDATION_EXPORT double TAKUUIDVersionNumber; 13 | 14 | //! Project version string for TAKUUID. 15 | FOUNDATION_EXPORT const unsigned char TAKUUIDVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | #import 20 | -------------------------------------------------------------------------------- /Classes/TAKUUID.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAKUUID.h 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi 6 | // Copyright (c) 2014 Takahiro Ooishi. All rights reserved. 7 | // Released under the MIT license. 8 | // 9 | 10 | #ifndef _TAKUUID_ 11 | #define _TAKUUID_ 12 | 13 | #import "TAKUUIDStorage.h" 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /Classes/TAKUUIDStorage.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAKUUIDStorage.h 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi 6 | // Copyright (c) 2014 Takahiro Ooishi. All rights reserved. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import 12 | 13 | @interface TAKUUIDStorage : NSObject 14 | 15 | @property (nonatomic, readonly) OSStatus lastErrorStatus; 16 | @property (nonatomic, copy, nullable) NSString *accessGroup; 17 | 18 | + (nonnull instancetype)sharedInstance; 19 | - (nullable NSString *)findOrCreate; 20 | - (BOOL)remove; 21 | - (nullable NSString *)renew; 22 | - (BOOL)migrate; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/TAKUUIDStorage.m: -------------------------------------------------------------------------------- 1 | // 2 | // TAKUUIDStorage.m 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi 6 | // Copyright (c) 2014 Takahiro Ooishi. All rights reserved. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "TAKUUIDStorage.h" 11 | 12 | static NSString * const Account = @"TAKUUIDStorage/Account"; 13 | 14 | @interface TAKUUIDStorage () 15 | 16 | @property (nonatomic) OSStatus lastErrorStatus; 17 | 18 | @end 19 | 20 | @implementation TAKUUIDStorage 21 | 22 | + (nonnull instancetype)sharedInstance { 23 | static TAKUUIDStorage *_instance = nil; 24 | static dispatch_once_t oncePredicate; 25 | dispatch_once(&oncePredicate, ^{ 26 | _instance = [[self alloc] init]; 27 | }); 28 | return _instance; 29 | } 30 | 31 | - (nullable NSString *)findOrCreate { 32 | self.lastErrorStatus = noErr; 33 | NSString *UUIDString = [self find]; 34 | if (UUIDString) return UUIDString; 35 | return [self create]; 36 | } 37 | 38 | - (BOOL)remove { 39 | self.lastErrorStatus = noErr; 40 | OSStatus status = SecItemDelete((__bridge CFDictionaryRef)[self queryForRemove]); 41 | return [self verifyStatusAndStoreLastError:status]; 42 | } 43 | 44 | - (nullable NSString *)renew { 45 | self.lastErrorStatus = noErr; 46 | BOOL result = [self remove]; 47 | if (result) return [self create]; 48 | return nil; 49 | } 50 | 51 | - (BOOL)migrate { 52 | self.lastErrorStatus = noErr; 53 | 54 | NSString *UUIDString = [self find]; 55 | if (!UUIDString) return NO; 56 | 57 | BOOL result = [self remove]; 58 | if (!result) return NO; 59 | 60 | OSStatus status = SecItemAdd((__bridge CFDictionaryRef)[self queryForCreate:UUIDString], NULL); 61 | return [self verifyStatusAndStoreLastError:status]; 62 | } 63 | 64 | #pragma mark - PrivateMethods 65 | 66 | - (NSDictionary *)queryForFind { 67 | return @{ 68 | (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, 69 | (__bridge id)kSecAttrAccount: Account, 70 | (__bridge id)kSecAttrService: [NSBundle mainBundle].bundleIdentifier, 71 | (__bridge id)kSecReturnData: (__bridge id)kCFBooleanTrue 72 | }; 73 | } 74 | 75 | - (NSDictionary *)queryForCreate:(NSString *)UUIDString { 76 | NSMutableDictionary *items = @{ 77 | (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, 78 | (__bridge id)kSecAttrAccount: Account, 79 | (__bridge id)kSecAttrAccessible: (__bridge id)kSecAttrAccessibleAfterFirstUnlock, 80 | (__bridge id)kSecValueData: [UUIDString dataUsingEncoding:NSUTF8StringEncoding], 81 | (__bridge id)kSecAttrDescription: @"", 82 | (__bridge id)kSecAttrService: [NSBundle mainBundle].bundleIdentifier, 83 | (__bridge id)kSecAttrComment: @"" 84 | }.mutableCopy; 85 | 86 | if (self.accessGroup != nil && self.accessGroup.length > 0) { 87 | items[(__bridge id)kSecAttrAccessGroup] = self.accessGroup; 88 | } 89 | 90 | return [NSDictionary dictionaryWithDictionary: items]; 91 | } 92 | 93 | - (NSDictionary *)queryForRemove { 94 | return @{ 95 | (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, 96 | (__bridge id)kSecAttrAccount: Account, 97 | (__bridge id)kSecAttrService: [NSBundle mainBundle].bundleIdentifier 98 | }; 99 | } 100 | 101 | - (nullable NSString *)create { 102 | NSString *UUIDString = [[[NSUUID alloc] init] UUIDString]; 103 | OSStatus status = SecItemAdd((__bridge CFDictionaryRef)[self queryForCreate:UUIDString], NULL); 104 | if ([self verifyStatusAndStoreLastError:status]) return UUIDString; 105 | return nil; 106 | } 107 | 108 | - (nullable NSString *)find { 109 | CFDataRef result; 110 | OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)[self queryForFind], (CFTypeRef *)&result); 111 | if (![self verifyStatusAndStoreLastError:status]) return nil; 112 | 113 | NSData *data = (__bridge_transfer NSData *)result; 114 | return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 115 | } 116 | 117 | - (BOOL)verifyStatusAndStoreLastError:(OSStatus)status { 118 | BOOL isSuccess = (status == noErr); 119 | if (isSuccess) return YES; 120 | self.lastErrorStatus = status; 121 | return NO; 122 | } 123 | 124 | @end 125 | -------------------------------------------------------------------------------- /Examples/.gitignore: -------------------------------------------------------------------------------- 1 | # xcode noise 2 | build/* 3 | *.perspective 4 | *.perspectivev3 5 | *.pbxuser 6 | *.xcworkspace 7 | *.mode1 8 | *.mode2v3 9 | *.mode1v3 10 | xcuserdata 11 | Snapshots 12 | 13 | # old skool 14 | .svn 15 | 16 | # osx noise 17 | .DS_Store 18 | profile 19 | out/ 20 | 21 | .idea/ 22 | 23 | # CocoaPods 24 | Podfile.lock 25 | Pods/ 26 | *.xcworkspace/ 27 | 28 | vendor/ 29 | .bundle/ 30 | -------------------------------------------------------------------------------- /Examples/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '7.0' 2 | 3 | target 'TAKUUIDSample' do 4 | pod 'TAKUUID', :path => '../' 5 | end 6 | -------------------------------------------------------------------------------- /Examples/TAKUUID.h: -------------------------------------------------------------------------------- 1 | ../../../../../Classes/TAKUUID.h -------------------------------------------------------------------------------- /Examples/TAKUUIDSample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 86FA34E8192CDCFF0076278B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86FA34E7192CDCFF0076278B /* Foundation.framework */; }; 11 | 86FA34EA192CDCFF0076278B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86FA34E9192CDCFF0076278B /* CoreGraphics.framework */; }; 12 | 86FA34EC192CDCFF0076278B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86FA34EB192CDCFF0076278B /* UIKit.framework */; }; 13 | 86FA34F2192CDCFF0076278B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 86FA34F0192CDCFF0076278B /* InfoPlist.strings */; }; 14 | 86FA34F4192CDCFF0076278B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 86FA34F3192CDCFF0076278B /* main.m */; }; 15 | 86FA34F8192CDCFF0076278B /* TAKAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 86FA34F7192CDCFF0076278B /* TAKAppDelegate.m */; }; 16 | 86FA34FB192CDCFF0076278B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 86FA34F9192CDCFF0076278B /* Main.storyboard */; }; 17 | 86FA3500192CDCFF0076278B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 86FA34FF192CDCFF0076278B /* Images.xcassets */; }; 18 | 86FA3507192CDCFF0076278B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86FA3506192CDCFF0076278B /* XCTest.framework */; }; 19 | 86FA3508192CDCFF0076278B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86FA34E7192CDCFF0076278B /* Foundation.framework */; }; 20 | 86FA3509192CDCFF0076278B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86FA34EB192CDCFF0076278B /* UIKit.framework */; }; 21 | 86FA3511192CDCFF0076278B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 86FA350F192CDCFF0076278B /* InfoPlist.strings */; }; 22 | 86FA3513192CDCFF0076278B /* TAKUUIDSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 86FA3512192CDCFF0076278B /* TAKUUIDSampleTests.m */; }; 23 | A014475EE16DB630CD231432 /* libPods-TAKUUIDSample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AB3D4F2CFAAAED351C6717B /* libPods-TAKUUIDSample.a */; }; 24 | F8BFAB811D813BB200EC6624 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F8BFAB801D813BB200EC6624 /* Launch Screen.storyboard */; }; 25 | F8BFAB881D813C4F00EC6624 /* TAKViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8BFAB871D813C4F00EC6624 /* TAKViewController.swift */; }; 26 | /* End PBXBuildFile section */ 27 | 28 | /* Begin PBXContainerItemProxy section */ 29 | 86FA350A192CDCFF0076278B /* PBXContainerItemProxy */ = { 30 | isa = PBXContainerItemProxy; 31 | containerPortal = 86FA34DC192CDCFF0076278B /* Project object */; 32 | proxyType = 1; 33 | remoteGlobalIDString = 86FA34E3192CDCFF0076278B; 34 | remoteInfo = TAKUUIDSample; 35 | }; 36 | /* End PBXContainerItemProxy section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 41618DA211961824B57E0754 /* Pods-TAKUUIDSample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TAKUUIDSample.release.xcconfig"; path = "Pods/Target Support Files/Pods-TAKUUIDSample/Pods-TAKUUIDSample.release.xcconfig"; sourceTree = ""; }; 40 | 5AB3D4F2CFAAAED351C6717B /* libPods-TAKUUIDSample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TAKUUIDSample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 8627F3421D9D39190048F8F6 /* TAKUUIDSample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TAKUUIDSample.entitlements; sourceTree = ""; }; 42 | 86FA34E4192CDCFF0076278B /* TAKUUIDSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TAKUUIDSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 43 | 86FA34E7192CDCFF0076278B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 44 | 86FA34E9192CDCFF0076278B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 45 | 86FA34EB192CDCFF0076278B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 46 | 86FA34EF192CDCFF0076278B /* TAKUUIDSample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TAKUUIDSample-Info.plist"; sourceTree = ""; }; 47 | 86FA34F1192CDCFF0076278B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 48 | 86FA34F3192CDCFF0076278B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 49 | 86FA34F5192CDCFF0076278B /* TAKUUIDSample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TAKUUIDSample-Prefix.pch"; sourceTree = ""; }; 50 | 86FA34F6192CDCFF0076278B /* TAKAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TAKAppDelegate.h; sourceTree = ""; }; 51 | 86FA34F7192CDCFF0076278B /* TAKAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TAKAppDelegate.m; sourceTree = ""; }; 52 | 86FA34FA192CDCFF0076278B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 53 | 86FA34FF192CDCFF0076278B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 54 | 86FA3505192CDCFF0076278B /* TAKUUIDSampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TAKUUIDSampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | 86FA3506192CDCFF0076278B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 56 | 86FA350E192CDCFF0076278B /* TAKUUIDSampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TAKUUIDSampleTests-Info.plist"; sourceTree = ""; }; 57 | 86FA3510192CDCFF0076278B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 58 | 86FA3512192CDCFF0076278B /* TAKUUIDSampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TAKUUIDSampleTests.m; sourceTree = ""; }; 59 | F8BFAB801D813BB200EC6624 /* Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = ""; }; 60 | F8BFAB861D813C4F00EC6624 /* TAKUUIDSample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TAKUUIDSample-Bridging-Header.h"; sourceTree = ""; }; 61 | F8BFAB871D813C4F00EC6624 /* TAKViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TAKViewController.swift; sourceTree = ""; }; 62 | FB7248E1FC48DFD14A0A9CE4 /* Pods-TAKUUIDSample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TAKUUIDSample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-TAKUUIDSample/Pods-TAKUUIDSample.debug.xcconfig"; sourceTree = ""; }; 63 | /* End PBXFileReference section */ 64 | 65 | /* Begin PBXFrameworksBuildPhase section */ 66 | 86FA34E1192CDCFF0076278B /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | 86FA34EA192CDCFF0076278B /* CoreGraphics.framework in Frameworks */, 71 | 86FA34EC192CDCFF0076278B /* UIKit.framework in Frameworks */, 72 | 86FA34E8192CDCFF0076278B /* Foundation.framework in Frameworks */, 73 | A014475EE16DB630CD231432 /* libPods-TAKUUIDSample.a in Frameworks */, 74 | ); 75 | runOnlyForDeploymentPostprocessing = 0; 76 | }; 77 | 86FA3502192CDCFF0076278B /* Frameworks */ = { 78 | isa = PBXFrameworksBuildPhase; 79 | buildActionMask = 2147483647; 80 | files = ( 81 | 86FA3507192CDCFF0076278B /* XCTest.framework in Frameworks */, 82 | 86FA3509192CDCFF0076278B /* UIKit.framework in Frameworks */, 83 | 86FA3508192CDCFF0076278B /* Foundation.framework in Frameworks */, 84 | ); 85 | runOnlyForDeploymentPostprocessing = 0; 86 | }; 87 | /* End PBXFrameworksBuildPhase section */ 88 | 89 | /* Begin PBXGroup section */ 90 | 45D2A129666402916C1FFA80 /* Pods */ = { 91 | isa = PBXGroup; 92 | children = ( 93 | FB7248E1FC48DFD14A0A9CE4 /* Pods-TAKUUIDSample.debug.xcconfig */, 94 | 41618DA211961824B57E0754 /* Pods-TAKUUIDSample.release.xcconfig */, 95 | ); 96 | name = Pods; 97 | sourceTree = ""; 98 | }; 99 | 86FA34DB192CDCFF0076278B = { 100 | isa = PBXGroup; 101 | children = ( 102 | 86FA34ED192CDCFF0076278B /* TAKUUIDSample */, 103 | 86FA350C192CDCFF0076278B /* TAKUUIDSampleTests */, 104 | 86FA34E6192CDCFF0076278B /* Frameworks */, 105 | 86FA34E5192CDCFF0076278B /* Products */, 106 | 45D2A129666402916C1FFA80 /* Pods */, 107 | ); 108 | sourceTree = ""; 109 | }; 110 | 86FA34E5192CDCFF0076278B /* Products */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | 86FA34E4192CDCFF0076278B /* TAKUUIDSample.app */, 114 | 86FA3505192CDCFF0076278B /* TAKUUIDSampleTests.xctest */, 115 | ); 116 | name = Products; 117 | sourceTree = ""; 118 | }; 119 | 86FA34E6192CDCFF0076278B /* Frameworks */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 86FA34E7192CDCFF0076278B /* Foundation.framework */, 123 | 86FA34E9192CDCFF0076278B /* CoreGraphics.framework */, 124 | 86FA34EB192CDCFF0076278B /* UIKit.framework */, 125 | 86FA3506192CDCFF0076278B /* XCTest.framework */, 126 | 5AB3D4F2CFAAAED351C6717B /* libPods-TAKUUIDSample.a */, 127 | ); 128 | name = Frameworks; 129 | sourceTree = ""; 130 | }; 131 | 86FA34ED192CDCFF0076278B /* TAKUUIDSample */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 8627F3421D9D39190048F8F6 /* TAKUUIDSample.entitlements */, 135 | 86FA34F6192CDCFF0076278B /* TAKAppDelegate.h */, 136 | 86FA34F7192CDCFF0076278B /* TAKAppDelegate.m */, 137 | F8BFAB871D813C4F00EC6624 /* TAKViewController.swift */, 138 | 86FA34F9192CDCFF0076278B /* Main.storyboard */, 139 | 86FA34FF192CDCFF0076278B /* Images.xcassets */, 140 | F8BFAB801D813BB200EC6624 /* Launch Screen.storyboard */, 141 | F8BFAB861D813C4F00EC6624 /* TAKUUIDSample-Bridging-Header.h */, 142 | 86FA34EE192CDCFF0076278B /* Supporting Files */, 143 | ); 144 | path = TAKUUIDSample; 145 | sourceTree = ""; 146 | }; 147 | 86FA34EE192CDCFF0076278B /* Supporting Files */ = { 148 | isa = PBXGroup; 149 | children = ( 150 | 86FA34EF192CDCFF0076278B /* TAKUUIDSample-Info.plist */, 151 | 86FA34F0192CDCFF0076278B /* InfoPlist.strings */, 152 | 86FA34F3192CDCFF0076278B /* main.m */, 153 | 86FA34F5192CDCFF0076278B /* TAKUUIDSample-Prefix.pch */, 154 | ); 155 | name = "Supporting Files"; 156 | sourceTree = ""; 157 | }; 158 | 86FA350C192CDCFF0076278B /* TAKUUIDSampleTests */ = { 159 | isa = PBXGroup; 160 | children = ( 161 | 86FA3512192CDCFF0076278B /* TAKUUIDSampleTests.m */, 162 | 86FA350D192CDCFF0076278B /* Supporting Files */, 163 | ); 164 | path = TAKUUIDSampleTests; 165 | sourceTree = ""; 166 | }; 167 | 86FA350D192CDCFF0076278B /* Supporting Files */ = { 168 | isa = PBXGroup; 169 | children = ( 170 | 86FA350E192CDCFF0076278B /* TAKUUIDSampleTests-Info.plist */, 171 | 86FA350F192CDCFF0076278B /* InfoPlist.strings */, 172 | ); 173 | name = "Supporting Files"; 174 | sourceTree = ""; 175 | }; 176 | /* End PBXGroup section */ 177 | 178 | /* Begin PBXNativeTarget section */ 179 | 86FA34E3192CDCFF0076278B /* TAKUUIDSample */ = { 180 | isa = PBXNativeTarget; 181 | buildConfigurationList = 86FA3516192CDCFF0076278B /* Build configuration list for PBXNativeTarget "TAKUUIDSample" */; 182 | buildPhases = ( 183 | 3E3E4135021DAAD5083FEFF1 /* [CP] Check Pods Manifest.lock */, 184 | 86FA34E0192CDCFF0076278B /* Sources */, 185 | 86FA34E1192CDCFF0076278B /* Frameworks */, 186 | 86FA34E2192CDCFF0076278B /* Resources */, 187 | 15751FA551029291F30AFE7D /* [CP] Embed Pods Frameworks */, 188 | 6DBF134E89C83603FBA41475 /* [CP] Copy Pods Resources */, 189 | ); 190 | buildRules = ( 191 | ); 192 | dependencies = ( 193 | ); 194 | name = TAKUUIDSample; 195 | productName = TAKUUIDSample; 196 | productReference = 86FA34E4192CDCFF0076278B /* TAKUUIDSample.app */; 197 | productType = "com.apple.product-type.application"; 198 | }; 199 | 86FA3504192CDCFF0076278B /* TAKUUIDSampleTests */ = { 200 | isa = PBXNativeTarget; 201 | buildConfigurationList = 86FA3519192CDCFF0076278B /* Build configuration list for PBXNativeTarget "TAKUUIDSampleTests" */; 202 | buildPhases = ( 203 | 86FA3501192CDCFF0076278B /* Sources */, 204 | 86FA3502192CDCFF0076278B /* Frameworks */, 205 | 86FA3503192CDCFF0076278B /* Resources */, 206 | ); 207 | buildRules = ( 208 | ); 209 | dependencies = ( 210 | 86FA350B192CDCFF0076278B /* PBXTargetDependency */, 211 | ); 212 | name = TAKUUIDSampleTests; 213 | productName = TAKUUIDSampleTests; 214 | productReference = 86FA3505192CDCFF0076278B /* TAKUUIDSampleTests.xctest */; 215 | productType = "com.apple.product-type.bundle.unit-test"; 216 | }; 217 | /* End PBXNativeTarget section */ 218 | 219 | /* Begin PBXProject section */ 220 | 86FA34DC192CDCFF0076278B /* Project object */ = { 221 | isa = PBXProject; 222 | attributes = { 223 | CLASSPREFIX = TAK; 224 | LastSwiftUpdateCheck = 0730; 225 | LastUpgradeCheck = 0510; 226 | ORGANIZATIONNAME = "Takahiro Ooishi"; 227 | TargetAttributes = { 228 | 86FA34E3192CDCFF0076278B = { 229 | DevelopmentTeam = W7992S87DQ; 230 | LastSwiftMigration = 0800; 231 | SystemCapabilities = { 232 | com.apple.Keychain = { 233 | enabled = 1; 234 | }; 235 | }; 236 | }; 237 | 86FA3504192CDCFF0076278B = { 238 | TestTargetID = 86FA34E3192CDCFF0076278B; 239 | }; 240 | }; 241 | }; 242 | buildConfigurationList = 86FA34DF192CDCFF0076278B /* Build configuration list for PBXProject "TAKUUIDSample" */; 243 | compatibilityVersion = "Xcode 3.2"; 244 | developmentRegion = English; 245 | hasScannedForEncodings = 0; 246 | knownRegions = ( 247 | en, 248 | Base, 249 | ); 250 | mainGroup = 86FA34DB192CDCFF0076278B; 251 | productRefGroup = 86FA34E5192CDCFF0076278B /* Products */; 252 | projectDirPath = ""; 253 | projectRoot = ""; 254 | targets = ( 255 | 86FA34E3192CDCFF0076278B /* TAKUUIDSample */, 256 | 86FA3504192CDCFF0076278B /* TAKUUIDSampleTests */, 257 | ); 258 | }; 259 | /* End PBXProject section */ 260 | 261 | /* Begin PBXResourcesBuildPhase section */ 262 | 86FA34E2192CDCFF0076278B /* Resources */ = { 263 | isa = PBXResourcesBuildPhase; 264 | buildActionMask = 2147483647; 265 | files = ( 266 | 86FA3500192CDCFF0076278B /* Images.xcassets in Resources */, 267 | 86FA34F2192CDCFF0076278B /* InfoPlist.strings in Resources */, 268 | F8BFAB811D813BB200EC6624 /* Launch Screen.storyboard in Resources */, 269 | 86FA34FB192CDCFF0076278B /* Main.storyboard in Resources */, 270 | ); 271 | runOnlyForDeploymentPostprocessing = 0; 272 | }; 273 | 86FA3503192CDCFF0076278B /* Resources */ = { 274 | isa = PBXResourcesBuildPhase; 275 | buildActionMask = 2147483647; 276 | files = ( 277 | 86FA3511192CDCFF0076278B /* InfoPlist.strings in Resources */, 278 | ); 279 | runOnlyForDeploymentPostprocessing = 0; 280 | }; 281 | /* End PBXResourcesBuildPhase section */ 282 | 283 | /* Begin PBXShellScriptBuildPhase section */ 284 | 15751FA551029291F30AFE7D /* [CP] Embed Pods Frameworks */ = { 285 | isa = PBXShellScriptBuildPhase; 286 | buildActionMask = 2147483647; 287 | files = ( 288 | ); 289 | inputPaths = ( 290 | ); 291 | name = "[CP] Embed Pods Frameworks"; 292 | outputPaths = ( 293 | ); 294 | runOnlyForDeploymentPostprocessing = 0; 295 | shellPath = /bin/sh; 296 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TAKUUIDSample/Pods-TAKUUIDSample-frameworks.sh\"\n"; 297 | showEnvVarsInLog = 0; 298 | }; 299 | 3E3E4135021DAAD5083FEFF1 /* [CP] Check Pods Manifest.lock */ = { 300 | isa = PBXShellScriptBuildPhase; 301 | buildActionMask = 2147483647; 302 | files = ( 303 | ); 304 | inputPaths = ( 305 | ); 306 | name = "[CP] Check Pods Manifest.lock"; 307 | outputPaths = ( 308 | ); 309 | runOnlyForDeploymentPostprocessing = 0; 310 | shellPath = /bin/sh; 311 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 312 | showEnvVarsInLog = 0; 313 | }; 314 | 6DBF134E89C83603FBA41475 /* [CP] Copy Pods Resources */ = { 315 | isa = PBXShellScriptBuildPhase; 316 | buildActionMask = 2147483647; 317 | files = ( 318 | ); 319 | inputPaths = ( 320 | ); 321 | name = "[CP] Copy Pods Resources"; 322 | outputPaths = ( 323 | ); 324 | runOnlyForDeploymentPostprocessing = 0; 325 | shellPath = /bin/sh; 326 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TAKUUIDSample/Pods-TAKUUIDSample-resources.sh\"\n"; 327 | showEnvVarsInLog = 0; 328 | }; 329 | /* End PBXShellScriptBuildPhase section */ 330 | 331 | /* Begin PBXSourcesBuildPhase section */ 332 | 86FA34E0192CDCFF0076278B /* Sources */ = { 333 | isa = PBXSourcesBuildPhase; 334 | buildActionMask = 2147483647; 335 | files = ( 336 | 86FA34F4192CDCFF0076278B /* main.m in Sources */, 337 | F8BFAB881D813C4F00EC6624 /* TAKViewController.swift in Sources */, 338 | 86FA34F8192CDCFF0076278B /* TAKAppDelegate.m in Sources */, 339 | ); 340 | runOnlyForDeploymentPostprocessing = 0; 341 | }; 342 | 86FA3501192CDCFF0076278B /* Sources */ = { 343 | isa = PBXSourcesBuildPhase; 344 | buildActionMask = 2147483647; 345 | files = ( 346 | 86FA3513192CDCFF0076278B /* TAKUUIDSampleTests.m in Sources */, 347 | ); 348 | runOnlyForDeploymentPostprocessing = 0; 349 | }; 350 | /* End PBXSourcesBuildPhase section */ 351 | 352 | /* Begin PBXTargetDependency section */ 353 | 86FA350B192CDCFF0076278B /* PBXTargetDependency */ = { 354 | isa = PBXTargetDependency; 355 | target = 86FA34E3192CDCFF0076278B /* TAKUUIDSample */; 356 | targetProxy = 86FA350A192CDCFF0076278B /* PBXContainerItemProxy */; 357 | }; 358 | /* End PBXTargetDependency section */ 359 | 360 | /* Begin PBXVariantGroup section */ 361 | 86FA34F0192CDCFF0076278B /* InfoPlist.strings */ = { 362 | isa = PBXVariantGroup; 363 | children = ( 364 | 86FA34F1192CDCFF0076278B /* en */, 365 | ); 366 | name = InfoPlist.strings; 367 | sourceTree = ""; 368 | }; 369 | 86FA34F9192CDCFF0076278B /* Main.storyboard */ = { 370 | isa = PBXVariantGroup; 371 | children = ( 372 | 86FA34FA192CDCFF0076278B /* Base */, 373 | ); 374 | name = Main.storyboard; 375 | sourceTree = ""; 376 | }; 377 | 86FA350F192CDCFF0076278B /* InfoPlist.strings */ = { 378 | isa = PBXVariantGroup; 379 | children = ( 380 | 86FA3510192CDCFF0076278B /* en */, 381 | ); 382 | name = InfoPlist.strings; 383 | sourceTree = ""; 384 | }; 385 | /* End PBXVariantGroup section */ 386 | 387 | /* Begin XCBuildConfiguration section */ 388 | 86FA3514192CDCFF0076278B /* Debug */ = { 389 | isa = XCBuildConfiguration; 390 | buildSettings = { 391 | ALWAYS_SEARCH_USER_PATHS = NO; 392 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 393 | CLANG_CXX_LIBRARY = "libc++"; 394 | CLANG_ENABLE_MODULES = YES; 395 | CLANG_ENABLE_OBJC_ARC = YES; 396 | CLANG_WARN_BOOL_CONVERSION = YES; 397 | CLANG_WARN_CONSTANT_CONVERSION = YES; 398 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 399 | CLANG_WARN_EMPTY_BODY = YES; 400 | CLANG_WARN_ENUM_CONVERSION = YES; 401 | CLANG_WARN_INT_CONVERSION = YES; 402 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 403 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 404 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 405 | COPY_PHASE_STRIP = NO; 406 | GCC_C_LANGUAGE_STANDARD = gnu99; 407 | GCC_DYNAMIC_NO_PIC = NO; 408 | GCC_OPTIMIZATION_LEVEL = 0; 409 | GCC_PREPROCESSOR_DEFINITIONS = ( 410 | "DEBUG=1", 411 | "$(inherited)", 412 | ); 413 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 414 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 415 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 416 | GCC_WARN_UNDECLARED_SELECTOR = YES; 417 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 418 | GCC_WARN_UNUSED_FUNCTION = YES; 419 | GCC_WARN_UNUSED_VARIABLE = YES; 420 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 421 | ONLY_ACTIVE_ARCH = YES; 422 | SDKROOT = iphoneos; 423 | }; 424 | name = Debug; 425 | }; 426 | 86FA3515192CDCFF0076278B /* Release */ = { 427 | isa = XCBuildConfiguration; 428 | buildSettings = { 429 | ALWAYS_SEARCH_USER_PATHS = NO; 430 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 431 | CLANG_CXX_LIBRARY = "libc++"; 432 | CLANG_ENABLE_MODULES = YES; 433 | CLANG_ENABLE_OBJC_ARC = YES; 434 | CLANG_WARN_BOOL_CONVERSION = YES; 435 | CLANG_WARN_CONSTANT_CONVERSION = YES; 436 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 437 | CLANG_WARN_EMPTY_BODY = YES; 438 | CLANG_WARN_ENUM_CONVERSION = YES; 439 | CLANG_WARN_INT_CONVERSION = YES; 440 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 441 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 442 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 443 | COPY_PHASE_STRIP = YES; 444 | ENABLE_NS_ASSERTIONS = NO; 445 | GCC_C_LANGUAGE_STANDARD = gnu99; 446 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 447 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 448 | GCC_WARN_UNDECLARED_SELECTOR = YES; 449 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 450 | GCC_WARN_UNUSED_FUNCTION = YES; 451 | GCC_WARN_UNUSED_VARIABLE = YES; 452 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 453 | SDKROOT = iphoneos; 454 | VALIDATE_PRODUCT = YES; 455 | }; 456 | name = Release; 457 | }; 458 | 86FA3517192CDCFF0076278B /* Debug */ = { 459 | isa = XCBuildConfiguration; 460 | baseConfigurationReference = FB7248E1FC48DFD14A0A9CE4 /* Pods-TAKUUIDSample.debug.xcconfig */; 461 | buildSettings = { 462 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 463 | CLANG_ENABLE_MODULES = YES; 464 | CODE_SIGN_ENTITLEMENTS = TAKUUIDSample/TAKUUIDSample.entitlements; 465 | DEVELOPMENT_TEAM = W7992S87DQ; 466 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 467 | GCC_PREFIX_HEADER = "TAKUUIDSample/TAKUUIDSample-Prefix.pch"; 468 | INFOPLIST_FILE = "TAKUUIDSample/TAKUUIDSample-Info.plist"; 469 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 470 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 471 | PRODUCT_NAME = "$(TARGET_NAME)"; 472 | SWIFT_OBJC_BRIDGING_HEADER = "TAKUUIDSample/TAKUUIDSample-Bridging-Header.h"; 473 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 474 | SWIFT_VERSION = 3.0; 475 | WRAPPER_EXTENSION = app; 476 | }; 477 | name = Debug; 478 | }; 479 | 86FA3518192CDCFF0076278B /* Release */ = { 480 | isa = XCBuildConfiguration; 481 | baseConfigurationReference = 41618DA211961824B57E0754 /* Pods-TAKUUIDSample.release.xcconfig */; 482 | buildSettings = { 483 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 484 | CLANG_ENABLE_MODULES = YES; 485 | CODE_SIGN_ENTITLEMENTS = TAKUUIDSample/TAKUUIDSample.entitlements; 486 | DEVELOPMENT_TEAM = W7992S87DQ; 487 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 488 | GCC_PREFIX_HEADER = "TAKUUIDSample/TAKUUIDSample-Prefix.pch"; 489 | INFOPLIST_FILE = "TAKUUIDSample/TAKUUIDSample-Info.plist"; 490 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 491 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 492 | PRODUCT_NAME = "$(TARGET_NAME)"; 493 | SWIFT_OBJC_BRIDGING_HEADER = "TAKUUIDSample/TAKUUIDSample-Bridging-Header.h"; 494 | SWIFT_VERSION = 3.0; 495 | WRAPPER_EXTENSION = app; 496 | }; 497 | name = Release; 498 | }; 499 | 86FA351A192CDCFF0076278B /* Debug */ = { 500 | isa = XCBuildConfiguration; 501 | buildSettings = { 502 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 503 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/TAKUUIDSample.app/TAKUUIDSample"; 504 | FRAMEWORK_SEARCH_PATHS = ( 505 | "$(SDKROOT)/Developer/Library/Frameworks", 506 | "$(inherited)", 507 | "$(DEVELOPER_FRAMEWORKS_DIR)", 508 | ); 509 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 510 | GCC_PREFIX_HEADER = "TAKUUIDSample/TAKUUIDSample-Prefix.pch"; 511 | GCC_PREPROCESSOR_DEFINITIONS = ( 512 | "DEBUG=1", 513 | "$(inherited)", 514 | ); 515 | INFOPLIST_FILE = "TAKUUIDSampleTests/TAKUUIDSampleTests-Info.plist"; 516 | PRODUCT_NAME = "$(TARGET_NAME)"; 517 | TEST_HOST = "$(BUNDLE_LOADER)"; 518 | WRAPPER_EXTENSION = xctest; 519 | }; 520 | name = Debug; 521 | }; 522 | 86FA351B192CDCFF0076278B /* Release */ = { 523 | isa = XCBuildConfiguration; 524 | buildSettings = { 525 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 526 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/TAKUUIDSample.app/TAKUUIDSample"; 527 | FRAMEWORK_SEARCH_PATHS = ( 528 | "$(SDKROOT)/Developer/Library/Frameworks", 529 | "$(inherited)", 530 | "$(DEVELOPER_FRAMEWORKS_DIR)", 531 | ); 532 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 533 | GCC_PREFIX_HEADER = "TAKUUIDSample/TAKUUIDSample-Prefix.pch"; 534 | INFOPLIST_FILE = "TAKUUIDSampleTests/TAKUUIDSampleTests-Info.plist"; 535 | PRODUCT_NAME = "$(TARGET_NAME)"; 536 | TEST_HOST = "$(BUNDLE_LOADER)"; 537 | WRAPPER_EXTENSION = xctest; 538 | }; 539 | name = Release; 540 | }; 541 | /* End XCBuildConfiguration section */ 542 | 543 | /* Begin XCConfigurationList section */ 544 | 86FA34DF192CDCFF0076278B /* Build configuration list for PBXProject "TAKUUIDSample" */ = { 545 | isa = XCConfigurationList; 546 | buildConfigurations = ( 547 | 86FA3514192CDCFF0076278B /* Debug */, 548 | 86FA3515192CDCFF0076278B /* Release */, 549 | ); 550 | defaultConfigurationIsVisible = 0; 551 | defaultConfigurationName = Release; 552 | }; 553 | 86FA3516192CDCFF0076278B /* Build configuration list for PBXNativeTarget "TAKUUIDSample" */ = { 554 | isa = XCConfigurationList; 555 | buildConfigurations = ( 556 | 86FA3517192CDCFF0076278B /* Debug */, 557 | 86FA3518192CDCFF0076278B /* Release */, 558 | ); 559 | defaultConfigurationIsVisible = 0; 560 | defaultConfigurationName = Release; 561 | }; 562 | 86FA3519192CDCFF0076278B /* Build configuration list for PBXNativeTarget "TAKUUIDSampleTests" */ = { 563 | isa = XCConfigurationList; 564 | buildConfigurations = ( 565 | 86FA351A192CDCFF0076278B /* Debug */, 566 | 86FA351B192CDCFF0076278B /* Release */, 567 | ); 568 | defaultConfigurationIsVisible = 0; 569 | defaultConfigurationName = Release; 570 | }; 571 | /* End XCConfigurationList section */ 572 | }; 573 | rootObject = 86FA34DC192CDCFF0076278B /* Project object */; 574 | } 575 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 29 | 37 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/Launch Screen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/TAKAppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface TAKAppDelegate : UIResponder 4 | 5 | @property (strong, nonatomic) UIWindow *window; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/TAKAppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "TAKAppDelegate.h" 2 | 3 | @implementation TAKAppDelegate 4 | 5 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 6 | return YES; 7 | } 8 | 9 | @end 10 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/TAKUUIDSample-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import 6 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/TAKUUIDSample-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | net.heartofsword.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | KeychainAccessGroup 26 | $(AppIdentifierPrefix)net.heartofsword.TAKUUIDSample 27 | LSRequiresIPhoneOS 28 | 29 | UILaunchStoryboardName 30 | Launch Screen 31 | UIMainStoryboardFile 32 | Main 33 | UIRequiredDeviceCapabilities 34 | 35 | armv7 36 | 37 | UISupportedInterfaceOrientations 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationLandscapeLeft 41 | UIInterfaceOrientationLandscapeRight 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/TAKUUIDSample-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/TAKUUIDSample.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | keychain-access-groups 6 | 7 | $(AppIdentifierPrefix)net.heartofsword.TAKUUIDSample 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/TAKViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TAKViewController.swift 3 | // 4 | // Created by Takahiro Oishi 5 | // Copyright (c) 2016年 Takahiro Ooishi. All rights reserved. 6 | // 7 | 8 | import UIKit 9 | 10 | final class TAKViewController: UIViewController { 11 | override func viewDidLoad() { 12 | guard let accessGroup = Bundle.main.object(forInfoDictionaryKey: "KeychainAccessGroup") as? String else { return } 13 | TAKUUIDStorage.sharedInstance().accessGroup = accessGroup 14 | TAKUUIDStorage.sharedInstance().migrate() 15 | } 16 | 17 | @IBAction func remove() { 18 | let result = TAKUUIDStorage.sharedInstance().remove() 19 | print("remove = \(result)") 20 | print("lastErrorStatus = \(TAKUUIDStorage.sharedInstance().lastErrorStatus)") 21 | } 22 | 23 | @IBAction func findOrCreate() { 24 | guard let uuid = TAKUUIDStorage.sharedInstance().findOrCreate() else { return } 25 | print("uuid = \(uuid)") 26 | print("lastErrorStatus = \(TAKUUIDStorage.sharedInstance().lastErrorStatus)") 27 | } 28 | 29 | @IBAction func renew() { 30 | guard let uuid = TAKUUIDStorage.sharedInstance().renew() else { return } 31 | print("uuid = \(uuid)") 32 | print("lastErrorStatus = \(TAKUUIDStorage.sharedInstance().lastErrorStatus)") 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSample/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import "TAKAppDelegate.h" 3 | 4 | int main(int argc, char * argv[]) { 5 | @autoreleasepool { 6 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([TAKAppDelegate class])); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSampleTests/TAKUUIDSampleTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | net.heartofsword.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSampleTests/TAKUUIDSampleTests.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface TAKUUIDSampleTests : XCTestCase 4 | @end 5 | 6 | @implementation TAKUUIDSampleTests 7 | 8 | - (void)setUp { 9 | [super setUp]; 10 | } 11 | 12 | - (void)tearDown { 13 | [super tearDown]; 14 | } 15 | 16 | - (void)testExample { 17 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Examples/TAKUUIDSampleTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Examples/TAKUUIDStorage.h: -------------------------------------------------------------------------------- 1 | ../../../../../Classes/TAKUUIDStorage.h -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem 'cocoapods', '~> 1.2', '>= 1.2.1' 4 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | CFPropertyList (2.3.5) 5 | activesupport (4.2.8) 6 | i18n (~> 0.7) 7 | minitest (~> 5.1) 8 | thread_safe (~> 0.3, >= 0.3.4) 9 | tzinfo (~> 1.1) 10 | claide (1.0.2) 11 | cocoapods (1.2.1) 12 | activesupport (>= 4.0.2, < 5) 13 | claide (>= 1.0.1, < 2.0) 14 | cocoapods-core (= 1.2.1) 15 | cocoapods-deintegrate (>= 1.0.1, < 2.0) 16 | cocoapods-downloader (>= 1.1.3, < 2.0) 17 | cocoapods-plugins (>= 1.0.0, < 2.0) 18 | cocoapods-search (>= 1.0.0, < 2.0) 19 | cocoapods-stats (>= 1.0.0, < 2.0) 20 | cocoapods-trunk (>= 1.2.0, < 2.0) 21 | cocoapods-try (>= 1.1.0, < 2.0) 22 | colored2 (~> 3.1) 23 | escape (~> 0.0.4) 24 | fourflusher (~> 2.0.1) 25 | gh_inspector (~> 1.0) 26 | molinillo (~> 0.5.7) 27 | nap (~> 1.0) 28 | ruby-macho (~> 1.1) 29 | xcodeproj (>= 1.4.4, < 2.0) 30 | cocoapods-core (1.2.1) 31 | activesupport (>= 4.0.2, < 5) 32 | fuzzy_match (~> 2.0.4) 33 | nap (~> 1.0) 34 | cocoapods-deintegrate (1.0.1) 35 | cocoapods-downloader (1.1.3) 36 | cocoapods-plugins (1.0.0) 37 | nap 38 | cocoapods-search (1.0.0) 39 | cocoapods-stats (1.0.0) 40 | cocoapods-trunk (1.2.0) 41 | nap (>= 0.8, < 2.0) 42 | netrc (= 0.7.8) 43 | cocoapods-try (1.1.0) 44 | colored2 (3.1.2) 45 | escape (0.0.4) 46 | fourflusher (2.0.1) 47 | fuzzy_match (2.0.4) 48 | gh_inspector (1.0.3) 49 | i18n (0.8.4) 50 | minitest (5.10.2) 51 | molinillo (0.5.7) 52 | nanaimo (0.2.3) 53 | nap (1.1.0) 54 | netrc (0.7.8) 55 | ruby-macho (1.1.0) 56 | thread_safe (0.3.6) 57 | tzinfo (1.2.3) 58 | thread_safe (~> 0.1) 59 | xcodeproj (1.5.0) 60 | CFPropertyList (~> 2.3.3) 61 | claide (>= 1.0.2, < 2.0) 62 | colored2 (~> 3.1) 63 | nanaimo (~> 0.2.3) 64 | 65 | PLATFORMS 66 | ruby 67 | 68 | DEPENDENCIES 69 | cocoapods (~> 1.2, >= 1.2.1) 70 | 71 | BUNDLED WITH 72 | 1.14.6 73 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Takahiro Ooishi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.6 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "TAKUUID", 8 | defaultLocalization: "en", 9 | products: [ 10 | .library( 11 | name: "TAKUUID", 12 | targets: ["TAKUUID"]), 13 | ], 14 | targets: [ 15 | .target( 16 | name: "TAKUUID", 17 | path: "Classes", 18 | publicHeadersPath: "." 19 | ), 20 | // FIXME: SwiftPM cannot access keychain. Try with xcodeproj. 21 | // .testTarget( 22 | // name: "TAKUUIDTests", 23 | // dependencies: ["TAKUUID"], 24 | // path: "TAKUUIDTests", 25 | // ), 26 | ] 27 | ) 28 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | 3 | platform :ios, '8.0' 4 | 5 | target 'TAKUUID' do 6 | pod 'TAKUUID', :path => './' 7 | end 8 | 9 | target 'TAKUUIDTests' do 10 | pod 'TAKUUID', :path => './' 11 | end 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TAKUUID 2 | 3 | Generate UUID and save to KeyChain. 4 | 5 | ## Build Status 6 | 7 | ### master 8 | [![Build Status](https://travis-ci.org/taka0125/TAKUUID.svg?branch=master)](https://travis-ci.org/taka0125/TAKUUID) 9 | 10 | # How to use 11 | 12 | ## Podfile 13 | 14 | ```ruby 15 | pod 'TAKUUID' 16 | ``` 17 | 18 | or 19 | 20 | ```ruby 21 | pod 'TAKUUID', :git => 'https://github.com/taka0125/TAKUUID.git' 22 | ``` 23 | 24 | ## Carthage 25 | 26 | ``` 27 | github "taka0125/TAKUUID" 28 | ``` 29 | 30 | ## Project Setting 31 | 32 | - "Keychain Sharing" on 33 | 34 | http://stackoverflow.com/questions/20344255/secitemadd-and-secitemcopymatching-returns-error-code-34018-errsecmissingentit/31421742#31421742 35 | 36 | # Usage 37 | 38 | ## Keychain access group (Optional) 39 | 40 | First of all, set keychain access group. 41 | Then call `findOrCreate`. 42 | 43 | - Objective-C 44 | 45 | ```objectivec 46 | [TAKUUIDStorage sharedInstance].accessGroup = @"12ABCD3E4F.shared"; 47 | ``` 48 | 49 | - Swift 50 | 51 | ```swift 52 | TAKUUIDStorage.sharedInstance().accessGroup = "12ABCD3E4F.shared" 53 | ``` 54 | 55 | ### migrate 56 | 57 | after set keychain access group, call `migrate` method. 58 | 59 | - Objective-C 60 | 61 | ``` 62 | [[TAKUUIDStorage sharedInstance] migrate]; 63 | ``` 64 | 65 | - Swift 66 | 67 | ``` 68 | TAKUUIDStorage.sharedInstance().migrate() 69 | ``` 70 | 71 | ## findOrCreate 72 | 73 | If UUID already created, return it. 74 | If not creating UUID yet, create and return it. 75 | 76 | - Objective-C 77 | 78 | ```objectivec 79 | NSString *UUID = [[TAKUUIDStorage sharedInstance] findOrCreate]; 80 | ``` 81 | 82 | - Swift 83 | 84 | ```swift 85 | let UUID = TAKUUIDStorage.sharedInstance().findOrCreate() 86 | ``` 87 | 88 | ## renew 89 | 90 | renew UUID. 91 | 92 | - Objective-C 93 | 94 | ```objectivec 95 | NSString *UUID = [[TAKUUIDStorage sharedInstance] renew]; 96 | ``` 97 | 98 | - Swift 99 | 100 | ```swift 101 | let UUID = TAKUUIDStorage.sharedInstance().renew() 102 | ``` 103 | 104 | ## remove 105 | 106 | remove UUID from Keychain. 107 | 108 | - Objective-C 109 | 110 | ```objectivec 111 | BOOL isSuccess = [[TAKUUIDStorage sharedInstance] remove]; 112 | ``` 113 | 114 | - Swift 115 | 116 | ```swift 117 | let isSuccess = TAKUUIDStorage.sharedInstance().remove() 118 | ``` 119 | 120 | ## last error 121 | 122 | get last error. 123 | 124 | - Objective-C 125 | 126 | ```objectivec 127 | OSStatus status = [TAKUUIDStorage sharedInstance].lastErrorStatus; 128 | ``` 129 | 130 | - Swift 131 | 132 | ```swift 133 | let status = TAKUUIDStorage.sharedInstance().lastErrorStatus 134 | ``` 135 | 136 | ### show error detail from code 137 | 138 | ```console 139 | $ macerror CODE 140 | ``` 141 | -------------------------------------------------------------------------------- /TAKUUID.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'TAKUUID' 3 | s.version = '1.5.0' 4 | s.license = 'MIT' 5 | s.summary = 'create UUID and store to Keychain library' 6 | s.homepage = 'https://github.com/taka0125/TAKUUID' 7 | s.author = { 'Takahiro Ooishi' => 'taka0125@gmail.com' } 8 | s.source = { :git => 'https://github.com/taka0125/TAKUUID.git', :tag => s.version.to_s } 9 | s.requires_arc = true 10 | 11 | s.platform = :ios, '6.0' 12 | s.ios.deployment_target = '6.0' 13 | s.ios.frameworks = 'Security' 14 | 15 | s.public_header_files = 'Classes/*.h' 16 | s.source_files = 'Classes/*.{h,m}' 17 | end 18 | -------------------------------------------------------------------------------- /TAKUUID.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 5861A2BAEE32132013952677 /* libPods-TAKUUID.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F2DEF2190822161CA6754A /* libPods-TAKUUID.a */; }; 11 | 5BD0ACD25DD308DFF2D0C062 /* libPods-TAKUUIDTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 303A1BA9B36E2AB86AF0B7C7 /* libPods-TAKUUIDTests.a */; }; 12 | 8638B5D11A0E54E10089F979 /* TAKUUIDTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8638B5D01A0E54E10089F979 /* TAKUUIDTests.m */; }; 13 | 866B539B1A0E51150038140A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 866B539A1A0E51150038140A /* main.m */; }; 14 | 866B539E1A0E51150038140A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 866B539D1A0E51150038140A /* AppDelegate.m */; }; 15 | 866B53A11A0E51150038140A /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 866B53A01A0E51150038140A /* ViewController.m */; }; 16 | 866B53A41A0E51150038140A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 866B53A21A0E51150038140A /* Main.storyboard */; }; 17 | 866B53A61A0E51150038140A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 866B53A51A0E51150038140A /* Images.xcassets */; }; 18 | 866B53A91A0E51150038140A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 866B53A71A0E51150038140A /* LaunchScreen.xib */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 8638B5D21A0E54E10089F979 /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = 866B538D1A0E51150038140A /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 866B53941A0E51150038140A; 27 | remoteInfo = TAKUUID; 28 | }; 29 | /* End PBXContainerItemProxy section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 144600B75D9C7773461A9D6B /* Pods-TAKUUIDTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TAKUUIDTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-TAKUUIDTests/Pods-TAKUUIDTests.release.xcconfig"; sourceTree = ""; }; 33 | 195E76156F3AEF2C238A59C9 /* Pods-TAKUUID.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TAKUUID.release.xcconfig"; path = "Pods/Target Support Files/Pods-TAKUUID/Pods-TAKUUID.release.xcconfig"; sourceTree = ""; }; 34 | 303A1BA9B36E2AB86AF0B7C7 /* libPods-TAKUUIDTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TAKUUIDTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 8638B5CC1A0E54E10089F979 /* TAKUUIDTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TAKUUIDTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 36 | 8638B5CF1A0E54E10089F979 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 37 | 8638B5D01A0E54E10089F979 /* TAKUUIDTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TAKUUIDTests.m; sourceTree = ""; }; 38 | 866B53951A0E51150038140A /* TAKUUID.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TAKUUID.app; sourceTree = BUILT_PRODUCTS_DIR; }; 39 | 866B53991A0E51150038140A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 40 | 866B539A1A0E51150038140A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 41 | 866B539C1A0E51150038140A /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 42 | 866B539D1A0E51150038140A /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 43 | 866B539F1A0E51150038140A /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 44 | 866B53A01A0E51150038140A /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 45 | 866B53A31A0E51150038140A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 46 | 866B53A51A0E51150038140A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 47 | 866B53A81A0E51150038140A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 48 | 868FF6D61D9D2FE30067D4A7 /* TAKUUID.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TAKUUID.entitlements; sourceTree = ""; }; 49 | DD9BBD19EDDCFC37D55631E1 /* Pods-TAKUUID.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TAKUUID.debug.xcconfig"; path = "Pods/Target Support Files/Pods-TAKUUID/Pods-TAKUUID.debug.xcconfig"; sourceTree = ""; }; 50 | F4561C26A757716BEA43F86C /* Pods-TAKUUIDTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TAKUUIDTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-TAKUUIDTests/Pods-TAKUUIDTests.debug.xcconfig"; sourceTree = ""; }; 51 | F5F2DEF2190822161CA6754A /* libPods-TAKUUID.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TAKUUID.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | /* End PBXFileReference section */ 53 | 54 | /* Begin PBXFrameworksBuildPhase section */ 55 | 8638B5C91A0E54E10089F979 /* Frameworks */ = { 56 | isa = PBXFrameworksBuildPhase; 57 | buildActionMask = 2147483647; 58 | files = ( 59 | 5BD0ACD25DD308DFF2D0C062 /* libPods-TAKUUIDTests.a in Frameworks */, 60 | ); 61 | runOnlyForDeploymentPostprocessing = 0; 62 | }; 63 | 866B53921A0E51150038140A /* Frameworks */ = { 64 | isa = PBXFrameworksBuildPhase; 65 | buildActionMask = 2147483647; 66 | files = ( 67 | 5861A2BAEE32132013952677 /* libPods-TAKUUID.a in Frameworks */, 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | /* End PBXFrameworksBuildPhase section */ 72 | 73 | /* Begin PBXGroup section */ 74 | 8638B5CD1A0E54E10089F979 /* TAKUUIDTests */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 8638B5D01A0E54E10089F979 /* TAKUUIDTests.m */, 78 | 8638B5CE1A0E54E10089F979 /* Supporting Files */, 79 | ); 80 | path = TAKUUIDTests; 81 | sourceTree = ""; 82 | }; 83 | 8638B5CE1A0E54E10089F979 /* Supporting Files */ = { 84 | isa = PBXGroup; 85 | children = ( 86 | 8638B5CF1A0E54E10089F979 /* Info.plist */, 87 | ); 88 | name = "Supporting Files"; 89 | sourceTree = ""; 90 | }; 91 | 866B538C1A0E51150038140A = { 92 | isa = PBXGroup; 93 | children = ( 94 | 866B53971A0E51150038140A /* TAKUUID */, 95 | 8638B5CD1A0E54E10089F979 /* TAKUUIDTests */, 96 | 866B53961A0E51150038140A /* Products */, 97 | A3B6CE4359B28EC016EB64FC /* Pods */, 98 | 8CF10D9D6AD079500AD209EB /* Frameworks */, 99 | ); 100 | sourceTree = ""; 101 | }; 102 | 866B53961A0E51150038140A /* Products */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 866B53951A0E51150038140A /* TAKUUID.app */, 106 | 8638B5CC1A0E54E10089F979 /* TAKUUIDTests.xctest */, 107 | ); 108 | name = Products; 109 | sourceTree = ""; 110 | }; 111 | 866B53971A0E51150038140A /* TAKUUID */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 868FF6D61D9D2FE30067D4A7 /* TAKUUID.entitlements */, 115 | 866B539C1A0E51150038140A /* AppDelegate.h */, 116 | 866B539D1A0E51150038140A /* AppDelegate.m */, 117 | 866B539F1A0E51150038140A /* ViewController.h */, 118 | 866B53A01A0E51150038140A /* ViewController.m */, 119 | 866B53A21A0E51150038140A /* Main.storyboard */, 120 | 866B53A51A0E51150038140A /* Images.xcassets */, 121 | 866B53A71A0E51150038140A /* LaunchScreen.xib */, 122 | 866B53981A0E51150038140A /* Supporting Files */, 123 | ); 124 | path = TAKUUID; 125 | sourceTree = ""; 126 | }; 127 | 866B53981A0E51150038140A /* Supporting Files */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 866B53991A0E51150038140A /* Info.plist */, 131 | 866B539A1A0E51150038140A /* main.m */, 132 | ); 133 | name = "Supporting Files"; 134 | sourceTree = ""; 135 | }; 136 | 8CF10D9D6AD079500AD209EB /* Frameworks */ = { 137 | isa = PBXGroup; 138 | children = ( 139 | F5F2DEF2190822161CA6754A /* libPods-TAKUUID.a */, 140 | 303A1BA9B36E2AB86AF0B7C7 /* libPods-TAKUUIDTests.a */, 141 | ); 142 | name = Frameworks; 143 | sourceTree = ""; 144 | }; 145 | A3B6CE4359B28EC016EB64FC /* Pods */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | DD9BBD19EDDCFC37D55631E1 /* Pods-TAKUUID.debug.xcconfig */, 149 | 195E76156F3AEF2C238A59C9 /* Pods-TAKUUID.release.xcconfig */, 150 | F4561C26A757716BEA43F86C /* Pods-TAKUUIDTests.debug.xcconfig */, 151 | 144600B75D9C7773461A9D6B /* Pods-TAKUUIDTests.release.xcconfig */, 152 | ); 153 | name = Pods; 154 | sourceTree = ""; 155 | }; 156 | /* End PBXGroup section */ 157 | 158 | /* Begin PBXNativeTarget section */ 159 | 8638B5CB1A0E54E10089F979 /* TAKUUIDTests */ = { 160 | isa = PBXNativeTarget; 161 | buildConfigurationList = 8638B5D41A0E54E10089F979 /* Build configuration list for PBXNativeTarget "TAKUUIDTests" */; 162 | buildPhases = ( 163 | D9B1F32AC8FD50B0B1EC89B8 /* [CP] Check Pods Manifest.lock */, 164 | 8638B5C81A0E54E10089F979 /* Sources */, 165 | 8638B5C91A0E54E10089F979 /* Frameworks */, 166 | 8638B5CA1A0E54E10089F979 /* Resources */, 167 | 7FFB779486454DF3127B1871 /* [CP] Embed Pods Frameworks */, 168 | 044D311F7DCC07060BDC5E3D /* [CP] Copy Pods Resources */, 169 | ); 170 | buildRules = ( 171 | ); 172 | dependencies = ( 173 | 8638B5D31A0E54E10089F979 /* PBXTargetDependency */, 174 | ); 175 | name = TAKUUIDTests; 176 | productName = TAKUUIDTests; 177 | productReference = 8638B5CC1A0E54E10089F979 /* TAKUUIDTests.xctest */; 178 | productType = "com.apple.product-type.bundle.unit-test"; 179 | }; 180 | 866B53941A0E51150038140A /* TAKUUID */ = { 181 | isa = PBXNativeTarget; 182 | buildConfigurationList = 866B53B81A0E51150038140A /* Build configuration list for PBXNativeTarget "TAKUUID" */; 183 | buildPhases = ( 184 | 23B9881108C6F22DB2B42880 /* [CP] Check Pods Manifest.lock */, 185 | 866B53911A0E51150038140A /* Sources */, 186 | 866B53921A0E51150038140A /* Frameworks */, 187 | 866B53931A0E51150038140A /* Resources */, 188 | 6C53EA8107B89CEE16ED2920 /* [CP] Embed Pods Frameworks */, 189 | 1B7D96986715664C3D136274 /* [CP] Copy Pods Resources */, 190 | ); 191 | buildRules = ( 192 | ); 193 | dependencies = ( 194 | ); 195 | name = TAKUUID; 196 | productName = TAKUUID; 197 | productReference = 866B53951A0E51150038140A /* TAKUUID.app */; 198 | productType = "com.apple.product-type.application"; 199 | }; 200 | /* End PBXNativeTarget section */ 201 | 202 | /* Begin PBXProject section */ 203 | 866B538D1A0E51150038140A /* Project object */ = { 204 | isa = PBXProject; 205 | attributes = { 206 | LastUpgradeCheck = 0730; 207 | ORGANIZATIONNAME = "Takahiro Ooishi"; 208 | TargetAttributes = { 209 | 8638B5CB1A0E54E10089F979 = { 210 | CreatedOnToolsVersion = 6.1; 211 | TestTargetID = 866B53941A0E51150038140A; 212 | }; 213 | 866B53941A0E51150038140A = { 214 | CreatedOnToolsVersion = 6.1; 215 | DevelopmentTeam = W7992S87DQ; 216 | SystemCapabilities = { 217 | com.apple.Keychain = { 218 | enabled = 1; 219 | }; 220 | }; 221 | }; 222 | }; 223 | }; 224 | buildConfigurationList = 866B53901A0E51150038140A /* Build configuration list for PBXProject "TAKUUID" */; 225 | compatibilityVersion = "Xcode 3.2"; 226 | developmentRegion = English; 227 | hasScannedForEncodings = 0; 228 | knownRegions = ( 229 | en, 230 | Base, 231 | ); 232 | mainGroup = 866B538C1A0E51150038140A; 233 | productRefGroup = 866B53961A0E51150038140A /* Products */; 234 | projectDirPath = ""; 235 | projectRoot = ""; 236 | targets = ( 237 | 866B53941A0E51150038140A /* TAKUUID */, 238 | 8638B5CB1A0E54E10089F979 /* TAKUUIDTests */, 239 | ); 240 | }; 241 | /* End PBXProject section */ 242 | 243 | /* Begin PBXResourcesBuildPhase section */ 244 | 8638B5CA1A0E54E10089F979 /* Resources */ = { 245 | isa = PBXResourcesBuildPhase; 246 | buildActionMask = 2147483647; 247 | files = ( 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | }; 251 | 866B53931A0E51150038140A /* Resources */ = { 252 | isa = PBXResourcesBuildPhase; 253 | buildActionMask = 2147483647; 254 | files = ( 255 | 866B53A41A0E51150038140A /* Main.storyboard in Resources */, 256 | 866B53A91A0E51150038140A /* LaunchScreen.xib in Resources */, 257 | 866B53A61A0E51150038140A /* Images.xcassets in Resources */, 258 | ); 259 | runOnlyForDeploymentPostprocessing = 0; 260 | }; 261 | /* End PBXResourcesBuildPhase section */ 262 | 263 | /* Begin PBXShellScriptBuildPhase section */ 264 | 044D311F7DCC07060BDC5E3D /* [CP] Copy Pods Resources */ = { 265 | isa = PBXShellScriptBuildPhase; 266 | buildActionMask = 2147483647; 267 | files = ( 268 | ); 269 | inputPaths = ( 270 | ); 271 | name = "[CP] Copy Pods Resources"; 272 | outputPaths = ( 273 | ); 274 | runOnlyForDeploymentPostprocessing = 0; 275 | shellPath = /bin/sh; 276 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TAKUUIDTests/Pods-TAKUUIDTests-resources.sh\"\n"; 277 | showEnvVarsInLog = 0; 278 | }; 279 | 1B7D96986715664C3D136274 /* [CP] Copy Pods Resources */ = { 280 | isa = PBXShellScriptBuildPhase; 281 | buildActionMask = 2147483647; 282 | files = ( 283 | ); 284 | inputPaths = ( 285 | ); 286 | name = "[CP] Copy Pods Resources"; 287 | outputPaths = ( 288 | ); 289 | runOnlyForDeploymentPostprocessing = 0; 290 | shellPath = /bin/sh; 291 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TAKUUID/Pods-TAKUUID-resources.sh\"\n"; 292 | showEnvVarsInLog = 0; 293 | }; 294 | 23B9881108C6F22DB2B42880 /* [CP] Check Pods Manifest.lock */ = { 295 | isa = PBXShellScriptBuildPhase; 296 | buildActionMask = 2147483647; 297 | files = ( 298 | ); 299 | inputPaths = ( 300 | ); 301 | name = "[CP] Check Pods Manifest.lock"; 302 | outputPaths = ( 303 | ); 304 | runOnlyForDeploymentPostprocessing = 0; 305 | shellPath = /bin/sh; 306 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 307 | showEnvVarsInLog = 0; 308 | }; 309 | 6C53EA8107B89CEE16ED2920 /* [CP] Embed Pods Frameworks */ = { 310 | isa = PBXShellScriptBuildPhase; 311 | buildActionMask = 2147483647; 312 | files = ( 313 | ); 314 | inputPaths = ( 315 | ); 316 | name = "[CP] Embed Pods Frameworks"; 317 | outputPaths = ( 318 | ); 319 | runOnlyForDeploymentPostprocessing = 0; 320 | shellPath = /bin/sh; 321 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TAKUUID/Pods-TAKUUID-frameworks.sh\"\n"; 322 | showEnvVarsInLog = 0; 323 | }; 324 | 7FFB779486454DF3127B1871 /* [CP] Embed Pods Frameworks */ = { 325 | isa = PBXShellScriptBuildPhase; 326 | buildActionMask = 2147483647; 327 | files = ( 328 | ); 329 | inputPaths = ( 330 | ); 331 | name = "[CP] Embed Pods Frameworks"; 332 | outputPaths = ( 333 | ); 334 | runOnlyForDeploymentPostprocessing = 0; 335 | shellPath = /bin/sh; 336 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-TAKUUIDTests/Pods-TAKUUIDTests-frameworks.sh\"\n"; 337 | showEnvVarsInLog = 0; 338 | }; 339 | D9B1F32AC8FD50B0B1EC89B8 /* [CP] Check Pods Manifest.lock */ = { 340 | isa = PBXShellScriptBuildPhase; 341 | buildActionMask = 2147483647; 342 | files = ( 343 | ); 344 | inputPaths = ( 345 | ); 346 | name = "[CP] Check Pods Manifest.lock"; 347 | outputPaths = ( 348 | ); 349 | runOnlyForDeploymentPostprocessing = 0; 350 | shellPath = /bin/sh; 351 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 352 | showEnvVarsInLog = 0; 353 | }; 354 | /* End PBXShellScriptBuildPhase section */ 355 | 356 | /* Begin PBXSourcesBuildPhase section */ 357 | 8638B5C81A0E54E10089F979 /* Sources */ = { 358 | isa = PBXSourcesBuildPhase; 359 | buildActionMask = 2147483647; 360 | files = ( 361 | 8638B5D11A0E54E10089F979 /* TAKUUIDTests.m in Sources */, 362 | ); 363 | runOnlyForDeploymentPostprocessing = 0; 364 | }; 365 | 866B53911A0E51150038140A /* Sources */ = { 366 | isa = PBXSourcesBuildPhase; 367 | buildActionMask = 2147483647; 368 | files = ( 369 | 866B53A11A0E51150038140A /* ViewController.m in Sources */, 370 | 866B539E1A0E51150038140A /* AppDelegate.m in Sources */, 371 | 866B539B1A0E51150038140A /* main.m in Sources */, 372 | ); 373 | runOnlyForDeploymentPostprocessing = 0; 374 | }; 375 | /* End PBXSourcesBuildPhase section */ 376 | 377 | /* Begin PBXTargetDependency section */ 378 | 8638B5D31A0E54E10089F979 /* PBXTargetDependency */ = { 379 | isa = PBXTargetDependency; 380 | target = 866B53941A0E51150038140A /* TAKUUID */; 381 | targetProxy = 8638B5D21A0E54E10089F979 /* PBXContainerItemProxy */; 382 | }; 383 | /* End PBXTargetDependency section */ 384 | 385 | /* Begin PBXVariantGroup section */ 386 | 866B53A21A0E51150038140A /* Main.storyboard */ = { 387 | isa = PBXVariantGroup; 388 | children = ( 389 | 866B53A31A0E51150038140A /* Base */, 390 | ); 391 | name = Main.storyboard; 392 | sourceTree = ""; 393 | }; 394 | 866B53A71A0E51150038140A /* LaunchScreen.xib */ = { 395 | isa = PBXVariantGroup; 396 | children = ( 397 | 866B53A81A0E51150038140A /* Base */, 398 | ); 399 | name = LaunchScreen.xib; 400 | sourceTree = ""; 401 | }; 402 | /* End PBXVariantGroup section */ 403 | 404 | /* Begin XCBuildConfiguration section */ 405 | 8638B5D51A0E54E10089F979 /* Debug */ = { 406 | isa = XCBuildConfiguration; 407 | baseConfigurationReference = F4561C26A757716BEA43F86C /* Pods-TAKUUIDTests.debug.xcconfig */; 408 | buildSettings = { 409 | BUNDLE_LOADER = "$(TEST_HOST)"; 410 | FRAMEWORK_SEARCH_PATHS = ( 411 | "$(SDKROOT)/Developer/Library/Frameworks", 412 | "$(inherited)", 413 | ); 414 | GCC_PREPROCESSOR_DEFINITIONS = ( 415 | "DEBUG=1", 416 | "$(inherited)", 417 | ); 418 | INFOPLIST_FILE = TAKUUIDTests/Info.plist; 419 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 420 | PRODUCT_BUNDLE_IDENTIFIER = "net.heartofsword.$(PRODUCT_NAME:rfc1034identifier)"; 421 | PRODUCT_NAME = "$(TARGET_NAME)"; 422 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TAKUUID.app/TAKUUID"; 423 | }; 424 | name = Debug; 425 | }; 426 | 8638B5D61A0E54E10089F979 /* Release */ = { 427 | isa = XCBuildConfiguration; 428 | baseConfigurationReference = 144600B75D9C7773461A9D6B /* Pods-TAKUUIDTests.release.xcconfig */; 429 | buildSettings = { 430 | BUNDLE_LOADER = "$(TEST_HOST)"; 431 | FRAMEWORK_SEARCH_PATHS = ( 432 | "$(SDKROOT)/Developer/Library/Frameworks", 433 | "$(inherited)", 434 | ); 435 | INFOPLIST_FILE = TAKUUIDTests/Info.plist; 436 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 437 | PRODUCT_BUNDLE_IDENTIFIER = "net.heartofsword.$(PRODUCT_NAME:rfc1034identifier)"; 438 | PRODUCT_NAME = "$(TARGET_NAME)"; 439 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TAKUUID.app/TAKUUID"; 440 | }; 441 | name = Release; 442 | }; 443 | 866B53B61A0E51150038140A /* Debug */ = { 444 | isa = XCBuildConfiguration; 445 | buildSettings = { 446 | ALWAYS_SEARCH_USER_PATHS = NO; 447 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 448 | CLANG_CXX_LIBRARY = "libc++"; 449 | CLANG_ENABLE_MODULES = YES; 450 | CLANG_ENABLE_OBJC_ARC = YES; 451 | CLANG_WARN_BOOL_CONVERSION = YES; 452 | CLANG_WARN_CONSTANT_CONVERSION = YES; 453 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 454 | CLANG_WARN_EMPTY_BODY = YES; 455 | CLANG_WARN_ENUM_CONVERSION = YES; 456 | CLANG_WARN_INT_CONVERSION = YES; 457 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 458 | CLANG_WARN_UNREACHABLE_CODE = YES; 459 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 460 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 461 | COPY_PHASE_STRIP = NO; 462 | ENABLE_STRICT_OBJC_MSGSEND = YES; 463 | ENABLE_TESTABILITY = YES; 464 | GCC_C_LANGUAGE_STANDARD = gnu99; 465 | GCC_DYNAMIC_NO_PIC = NO; 466 | GCC_OPTIMIZATION_LEVEL = 0; 467 | GCC_PREPROCESSOR_DEFINITIONS = ( 468 | "DEBUG=1", 469 | "$(inherited)", 470 | ); 471 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 472 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 473 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 474 | GCC_WARN_UNDECLARED_SELECTOR = YES; 475 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 476 | GCC_WARN_UNUSED_FUNCTION = YES; 477 | GCC_WARN_UNUSED_VARIABLE = YES; 478 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 479 | MTL_ENABLE_DEBUG_INFO = YES; 480 | ONLY_ACTIVE_ARCH = YES; 481 | SDKROOT = iphoneos; 482 | }; 483 | name = Debug; 484 | }; 485 | 866B53B71A0E51150038140A /* Release */ = { 486 | isa = XCBuildConfiguration; 487 | buildSettings = { 488 | ALWAYS_SEARCH_USER_PATHS = NO; 489 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 490 | CLANG_CXX_LIBRARY = "libc++"; 491 | CLANG_ENABLE_MODULES = YES; 492 | CLANG_ENABLE_OBJC_ARC = YES; 493 | CLANG_WARN_BOOL_CONVERSION = YES; 494 | CLANG_WARN_CONSTANT_CONVERSION = YES; 495 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 496 | CLANG_WARN_EMPTY_BODY = YES; 497 | CLANG_WARN_ENUM_CONVERSION = YES; 498 | CLANG_WARN_INT_CONVERSION = YES; 499 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 500 | CLANG_WARN_UNREACHABLE_CODE = YES; 501 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 502 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 503 | COPY_PHASE_STRIP = YES; 504 | ENABLE_NS_ASSERTIONS = NO; 505 | ENABLE_STRICT_OBJC_MSGSEND = YES; 506 | GCC_C_LANGUAGE_STANDARD = gnu99; 507 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 508 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 509 | GCC_WARN_UNDECLARED_SELECTOR = YES; 510 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 511 | GCC_WARN_UNUSED_FUNCTION = YES; 512 | GCC_WARN_UNUSED_VARIABLE = YES; 513 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 514 | MTL_ENABLE_DEBUG_INFO = NO; 515 | SDKROOT = iphoneos; 516 | VALIDATE_PRODUCT = YES; 517 | }; 518 | name = Release; 519 | }; 520 | 866B53B91A0E51150038140A /* Debug */ = { 521 | isa = XCBuildConfiguration; 522 | baseConfigurationReference = DD9BBD19EDDCFC37D55631E1 /* Pods-TAKUUID.debug.xcconfig */; 523 | buildSettings = { 524 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 525 | CODE_SIGN_ENTITLEMENTS = TAKUUID/TAKUUID.entitlements; 526 | DEVELOPMENT_TEAM = W7992S87DQ; 527 | INFOPLIST_FILE = TAKUUID/Info.plist; 528 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 529 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 530 | PRODUCT_BUNDLE_IDENTIFIER = "net.heartofsword.$(PRODUCT_NAME:rfc1034identifier)"; 531 | PRODUCT_NAME = "$(TARGET_NAME)"; 532 | TARGETED_DEVICE_FAMILY = "1,2"; 533 | }; 534 | name = Debug; 535 | }; 536 | 866B53BA1A0E51150038140A /* Release */ = { 537 | isa = XCBuildConfiguration; 538 | baseConfigurationReference = 195E76156F3AEF2C238A59C9 /* Pods-TAKUUID.release.xcconfig */; 539 | buildSettings = { 540 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 541 | CODE_SIGN_ENTITLEMENTS = TAKUUID/TAKUUID.entitlements; 542 | DEVELOPMENT_TEAM = W7992S87DQ; 543 | INFOPLIST_FILE = TAKUUID/Info.plist; 544 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 545 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 546 | PRODUCT_BUNDLE_IDENTIFIER = "net.heartofsword.$(PRODUCT_NAME:rfc1034identifier)"; 547 | PRODUCT_NAME = "$(TARGET_NAME)"; 548 | TARGETED_DEVICE_FAMILY = "1,2"; 549 | }; 550 | name = Release; 551 | }; 552 | /* End XCBuildConfiguration section */ 553 | 554 | /* Begin XCConfigurationList section */ 555 | 8638B5D41A0E54E10089F979 /* Build configuration list for PBXNativeTarget "TAKUUIDTests" */ = { 556 | isa = XCConfigurationList; 557 | buildConfigurations = ( 558 | 8638B5D51A0E54E10089F979 /* Debug */, 559 | 8638B5D61A0E54E10089F979 /* Release */, 560 | ); 561 | defaultConfigurationIsVisible = 0; 562 | defaultConfigurationName = Release; 563 | }; 564 | 866B53901A0E51150038140A /* Build configuration list for PBXProject "TAKUUID" */ = { 565 | isa = XCConfigurationList; 566 | buildConfigurations = ( 567 | 866B53B61A0E51150038140A /* Debug */, 568 | 866B53B71A0E51150038140A /* Release */, 569 | ); 570 | defaultConfigurationIsVisible = 0; 571 | defaultConfigurationName = Release; 572 | }; 573 | 866B53B81A0E51150038140A /* Build configuration list for PBXNativeTarget "TAKUUID" */ = { 574 | isa = XCConfigurationList; 575 | buildConfigurations = ( 576 | 866B53B91A0E51150038140A /* Debug */, 577 | 866B53BA1A0E51150038140A /* Release */, 578 | ); 579 | defaultConfigurationIsVisible = 0; 580 | defaultConfigurationName = Release; 581 | }; 582 | /* End XCConfigurationList section */ 583 | }; 584 | rootObject = 866B538D1A0E51150038140A /* Project object */; 585 | } 586 | -------------------------------------------------------------------------------- /TAKUUID.xcodeproj/xcshareddata/xcschemes/TAKUUID.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 67 | 68 | 78 | 80 | 86 | 87 | 88 | 89 | 93 | 94 | 95 | 96 | 97 | 98 | 104 | 106 | 112 | 113 | 114 | 115 | 117 | 118 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /TAKUUID/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi on 2014/11/08. 6 | // Copyright (c) 2014年 Takahiro Ooishi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /TAKUUID/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi on 2014/11/08. 6 | // Copyright (c) 2014年 Takahiro Ooishi. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | // Override point for customization after application launch. 20 | return YES; 21 | } 22 | 23 | - (void)applicationWillResignActive:(UIApplication *)application { 24 | // 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. 25 | // 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. 26 | } 27 | 28 | - (void)applicationDidEnterBackground:(UIApplication *)application { 29 | // 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. 30 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 31 | } 32 | 33 | - (void)applicationWillEnterForeground:(UIApplication *)application { 34 | // 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. 35 | } 36 | 37 | - (void)applicationDidBecomeActive:(UIApplication *)application { 38 | // 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. 39 | } 40 | 41 | - (void)applicationWillTerminate:(UIApplication *)application { 42 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /TAKUUID/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /TAKUUID/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 29 | 38 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /TAKUUID/Images.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 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /TAKUUID/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 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | KeychainAccessGroup 24 | $(AppIdentifierPrefix)net.heartofsword.TAKUUID 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /TAKUUID/TAKUUID.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | keychain-access-groups 6 | 7 | $(AppIdentifierPrefix)net.heartofsword.TAKUUID 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /TAKUUID/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi on 2014/11/08. 6 | // Copyright (c) 2014年 Takahiro Ooishi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /TAKUUID/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi on 2014/11/08. 6 | // Copyright (c) 2014年 Takahiro Ooishi. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import 11 | 12 | @implementation ViewController 13 | 14 | - (void)viewDidLoad { 15 | NSString *accessGroup = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"KeychainAccessGroup"]; 16 | [TAKUUIDStorage sharedInstance].accessGroup = accessGroup; 17 | } 18 | 19 | - (IBAction)remove { 20 | BOOL result = [[TAKUUIDStorage sharedInstance] remove]; 21 | NSLog(@"remove => %d", result); 22 | NSLog(@"lastErrorStatus = %d", (int)[TAKUUIDStorage sharedInstance].lastErrorStatus); 23 | } 24 | 25 | - (IBAction)findOrCreate { 26 | NSString *UUIDString = [[TAKUUIDStorage sharedInstance] findOrCreate]; 27 | NSLog(@"UUID = %@", UUIDString); 28 | NSLog(@"lastErrorStatus = %d", (int)[TAKUUIDStorage sharedInstance].lastErrorStatus); 29 | } 30 | 31 | - (IBAction)renew { 32 | NSString *UUIDString = [[TAKUUIDStorage sharedInstance] renew]; 33 | NSLog(@"UUID = %@", UUIDString); 34 | NSLog(@"lastErrorStatus = %d", (int)[TAKUUIDStorage sharedInstance].lastErrorStatus); 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /TAKUUID/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TAKUUID 4 | // 5 | // Created by Takahiro Ooishi on 2014/11/08. 6 | // Copyright (c) 2014年 Takahiro Ooishi. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TAKUUIDTests/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 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /TAKUUIDTests/TAKUUIDTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // TAKUUIDTests.m 3 | // TAKUUIDTests 4 | // 5 | // Created by Takahiro Ooishi on 2014/11/08. 6 | // Copyright (c) 2014年 Takahiro Ooishi. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | @interface TAKUUIDTests : XCTestCase 14 | 15 | @end 16 | 17 | @implementation TAKUUIDTests 18 | 19 | - (void)setUp { 20 | [[TAKUUIDStorage sharedInstance] remove]; 21 | } 22 | 23 | - (void)testCreate { 24 | NSString *UUID = [[TAKUUIDStorage sharedInstance] findOrCreate]; 25 | XCTAssertNotNil(UUID); 26 | } 27 | 28 | - (void)testFind { 29 | NSString *first = [[TAKUUIDStorage sharedInstance] findOrCreate]; 30 | XCTAssertNotNil(first); 31 | 32 | NSString *second = [[TAKUUIDStorage sharedInstance] findOrCreate]; 33 | XCTAssertNotNil(second); 34 | 35 | XCTAssertEqualObjects(first, second); 36 | } 37 | 38 | - (void)testRemove { 39 | NSString *first = [[TAKUUIDStorage sharedInstance] findOrCreate]; 40 | XCTAssertNotNil(first); 41 | 42 | BOOL success = [[TAKUUIDStorage sharedInstance] remove]; 43 | XCTAssertTrue(success); 44 | 45 | NSString *second = [[TAKUUIDStorage sharedInstance] findOrCreate]; 46 | XCTAssertNotNil(second); 47 | 48 | XCTAssertNotEqualObjects(first, second); 49 | } 50 | 51 | - (void)testRenew { 52 | NSString *first = [[TAKUUIDStorage sharedInstance] findOrCreate]; 53 | XCTAssertNotNil(first); 54 | 55 | NSString *second = [[TAKUUIDStorage sharedInstance] renew]; 56 | XCTAssertNotNil(second); 57 | 58 | XCTAssertNotEqualObjects(first, second); 59 | } 60 | 61 | @end 62 | --------------------------------------------------------------------------------