├── .gitignore ├── Classes ├── .DS_Store ├── .gitignore ├── TiTestflightModule.h ├── TiTestflightModule.m ├── TiTestflightModuleAssets.h └── TiTestflightModuleAssets.m ├── LICENSE ├── README.md ├── TestFlight.h ├── TiTestflight_Prefix.pch ├── assets └── README ├── build.py ├── documentation ├── .DS_Store └── index.md ├── example ├── .DS_Store └── app.js ├── hooks ├── .DS_Store ├── README ├── add.py ├── install.py ├── remove.py └── uninstall.py ├── libTestFlight.a ├── manifest ├── module.xcconfig ├── platform └── README ├── testflight.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ ├── fusion94.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── mapperson.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ └── WorkspaceSettings.xcsettings └── xcuserdata │ ├── fusion94.xcuserdatad │ └── xcschemes │ │ ├── Build & Test.xcscheme │ │ ├── testflight.xcscheme │ │ └── xcschememanagement.plist │ └── mapperson.xcuserdatad │ └── xcschemes │ ├── Build & Test.xcscheme │ ├── testflight.xcscheme │ └── xcschememanagement.plist ├── ti.testflight-iphone-1.1.zip ├── ti.testflight-iphone-1.2.zip ├── timodule.xml └── titanium.xcconfig /.gitignore: -------------------------------------------------------------------------------- 1 | tmp 2 | bin 3 | build 4 | .project 5 | .settings 6 | .pydevproject 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /Classes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/Classes/.DS_Store -------------------------------------------------------------------------------- /Classes/.gitignore: -------------------------------------------------------------------------------- 1 | TiTestflight.h 2 | TiTestflight.m 3 | -------------------------------------------------------------------------------- /Classes/TiTestflightModule.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Your Copyright Here 3 | * 4 | * Appcelerator Titanium is Copyright (c) 2009-2010 by Appcelerator, Inc. 5 | * and licensed under the Apache Public License (version 2) 6 | */ 7 | #import "TiModule.h" 8 | 9 | @interface TiTestflightModule : TiModule 10 | { 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Classes/TiTestflightModule.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Your Copyright Here 3 | * 4 | * Appcelerator Titanium is Copyright (c) 2009-2010 by Appcelerator, Inc. 5 | * and licensed under the Apache Public License (version 2) 6 | */ 7 | #import "TiTestflightModule.h" 8 | #import "TiBase.h" 9 | #import "TiHost.h" 10 | #import "TiUtils.h" 11 | #import "TestFlight.h" 12 | 13 | @implementation TiTestflightModule 14 | 15 | #pragma mark Internal 16 | 17 | // this is generated for your module, please do not change it 18 | -(id)moduleGUID 19 | { 20 | return @"4946b1e8-362c-46a8-a6fc-bbe40e892ecc"; 21 | } 22 | 23 | // this is generated for your module, please do not change it 24 | -(NSString*)moduleId 25 | { 26 | return @"ti.testflight"; 27 | } 28 | 29 | #pragma mark Lifecycle 30 | 31 | -(void)startup 32 | { 33 | // this method is called when the module is first loaded 34 | // you *must* call the superclass 35 | [super startup]; 36 | 37 | [TestFlight setOptions:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"sendLogOnlyOnCrash"]]; 38 | NSLog(@"[INFO] %@ loaded",self); 39 | } 40 | 41 | -(void)shutdown:(id)sender 42 | { 43 | // this method is called when the module is being unloaded 44 | // typically this is during shutdown. make sure you don't do too 45 | // much processing here or the app will be quit forceably 46 | 47 | // you *must* call the superclass 48 | [super shutdown:sender]; 49 | } 50 | 51 | #pragma mark Cleanup 52 | 53 | -(void)dealloc 54 | { 55 | // release any resources that have been retained by the module 56 | [super dealloc]; 57 | } 58 | 59 | #pragma mark Internal Memory Management 60 | 61 | -(void)didReceiveMemoryWarning:(NSNotification*)notification 62 | { 63 | // optionally release any resources that can be dynamically 64 | // reloaded once memory is available - such as caches 65 | [super didReceiveMemoryWarning:notification]; 66 | } 67 | 68 | #pragma Public APIs 69 | 70 | -(void)token:(id)args 71 | { 72 | ENSURE_UI_THREAD(token, args); 73 | NSString *value = [TiUtils stringValue:[args objectAtIndex:0]]; 74 | BOOL testing = FALSE; 75 | 76 | if ([args count] > 1) { 77 | testing = [TiUtils boolValue: [args objectAtIndex:1]]; 78 | if (testing == TRUE) { 79 | [TestFlight setDeviceIdentifier: [[UIDevice currentDevice] uniqueIdentifier]]; 80 | } 81 | } 82 | 83 | [TestFlight takeOff:value]; 84 | } 85 | 86 | -(void)checkpoint:(id)args 87 | { 88 | ENSURE_UI_THREAD_1_ARG(args); 89 | 90 | NSString *value = [TiUtils stringValue:[args objectAtIndex:0]]; 91 | [TestFlight passCheckpoint:value]; 92 | } 93 | 94 | -(void)feedback:(id)args 95 | { 96 | ENSURE_UI_THREAD_1_ARG(args); 97 | [TestFlight openFeedbackView]; 98 | } 99 | 100 | -(void)submitFeedback:(id)args 101 | { 102 | ENSURE_UI_THREAD_1_ARG(args); 103 | 104 | NSString *value = [TiUtils stringValue:[args objectAtIndex:0]]; 105 | [TestFlight submitFeedback:value]; 106 | 107 | } 108 | 109 | -(void)customInfo:(id)args 110 | { 111 | NSString *key = [TiUtils stringValue:[args objectAtIndex:0]]; 112 | NSString *value = [TiUtils stringValue:[args objectAtIndex:1]]; 113 | [TestFlight addCustomEnvironmentInformation: value forKey:key]; 114 | } 115 | 116 | -(void)remoteLog:(id)args 117 | { 118 | ENSURE_UI_THREAD_1_ARG(args); 119 | NSString *value = [TiUtils stringValue:[args objectAtIndex:0]]; 120 | TFLog(@"[INFO] %@",value); 121 | } 122 | 123 | @end 124 | -------------------------------------------------------------------------------- /Classes/TiTestflightModuleAssets.h: -------------------------------------------------------------------------------- 1 | /** 2 | * This is a generated file. Do not edit or your changes will be lost 3 | */ 4 | 5 | @interface TiTestflightModuleAssets : NSObject 6 | { 7 | } 8 | - (NSData*) moduleAsset; 9 | @end 10 | -------------------------------------------------------------------------------- /Classes/TiTestflightModuleAssets.m: -------------------------------------------------------------------------------- 1 | /** 2 | * This is a generated file. Do not edit or your changes will be lost 3 | */ 4 | #import "TiTestflightModuleAssets.h" 5 | 6 | extern NSData * dataWithHexString (NSString * hexString); 7 | 8 | @implementation TiTestflightModuleAssets 9 | 10 | - (NSData*) moduleAsset 11 | { 12 | return nil; 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Licensed under the Apache License, Version 2.0 (the "License"); 2 | you may not use this file except in compliance with the License. 3 | You may obtain a copy of the License at 4 | 5 | http://www.apache.org/licenses/LICENSE-2.0 6 | 7 | (or the full text of the license is below) 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | 15 | 16 | 17 | Apache License 18 | Version 2.0, January 2004 19 | http://www.apache.org/licenses/ 20 | 21 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 22 | 23 | 1. Definitions. 24 | 25 | "License" shall mean the terms and conditions for use, reproduction, 26 | and distribution as defined by Sections 1 through 9 of this document. 27 | 28 | "Licensor" shall mean the copyright owner or entity authorized by 29 | the copyright owner that is granting the License. 30 | 31 | "Legal Entity" shall mean the union of the acting entity and all 32 | other entities that control, are controlled by, or are under common 33 | control with that entity. For the purposes of this definition, 34 | "control" means (i) the power, direct or indirect, to cause the 35 | direction or management of such entity, whether by contract or 36 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 37 | outstanding shares, or (iii) beneficial ownership of such entity. 38 | 39 | "You" (or "Your") shall mean an individual or Legal Entity 40 | exercising permissions granted by this License. 41 | 42 | "Source" form shall mean the preferred form for making modifications, 43 | including but not limited to software source code, documentation 44 | source, and configuration files. 45 | 46 | "Object" form shall mean any form resulting from mechanical 47 | transformation or translation of a Source form, including but 48 | not limited to compiled object code, generated documentation, 49 | and conversions to other media types. 50 | 51 | "Work" shall mean the work of authorship, whether in Source or 52 | Object form, made available under the License, as indicated by a 53 | copyright notice that is included in or attached to the work 54 | (an example is provided in the Appendix below). 55 | 56 | "Derivative Works" shall mean any work, whether in Source or Object 57 | form, that is based on (or derived from) the Work and for which the 58 | editorial revisions, annotations, elaborations, or other modifications 59 | represent, as a whole, an original work of authorship. For the purposes 60 | of this License, Derivative Works shall not include works that remain 61 | separable from, or merely link (or bind by name) to the interfaces of, 62 | the Work and Derivative Works thereof. 63 | 64 | "Contribution" shall mean any work of authorship, including 65 | the original version of the Work and any modifications or additions 66 | to that Work or Derivative Works thereof, that is intentionally 67 | submitted to Licensor for inclusion in the Work by the copyright owner 68 | or by an individual or Legal Entity authorized to submit on behalf of 69 | the copyright owner. For the purposes of this definition, "submitted" 70 | means any form of electronic, verbal, or written communication sent 71 | to the Licensor or its representatives, including but not limited to 72 | communication on electronic mailing lists, source code control systems, 73 | and issue tracking systems that are managed by, or on behalf of, the 74 | Licensor for the purpose of discussing and improving the Work, but 75 | excluding communication that is conspicuously marked or otherwise 76 | designated in writing by the copyright owner as "Not a Contribution." 77 | 78 | "Contributor" shall mean Licensor and any individual or Legal Entity 79 | on behalf of whom a Contribution has been received by Licensor and 80 | subsequently incorporated within the Work. 81 | 82 | 2. Grant of Copyright License. Subject to the terms and conditions of 83 | this License, each Contributor hereby grants to You a perpetual, 84 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 85 | copyright license to reproduce, prepare Derivative Works of, 86 | publicly display, publicly perform, sublicense, and distribute the 87 | Work and such Derivative Works in Source or Object form. 88 | 89 | 3. Grant of Patent License. Subject to the terms and conditions of 90 | this License, each Contributor hereby grants to You a perpetual, 91 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 92 | (except as stated in this section) patent license to make, have made, 93 | use, offer to sell, sell, import, and otherwise transfer the Work, 94 | where such license applies only to those patent claims licensable 95 | by such Contributor that are necessarily infringed by their 96 | Contribution(s) alone or by combination of their Contribution(s) 97 | with the Work to which such Contribution(s) was submitted. If You 98 | institute patent litigation against any entity (including a 99 | cross-claim or counterclaim in a lawsuit) alleging that the Work 100 | or a Contribution incorporated within the Work constitutes direct 101 | or contributory patent infringement, then any patent licenses 102 | granted to You under this License for that Work shall terminate 103 | as of the date such litigation is filed. 104 | 105 | 4. Redistribution. You may reproduce and distribute copies of the 106 | Work or Derivative Works thereof in any medium, with or without 107 | modifications, and in Source or Object form, provided that You 108 | meet the following conditions: 109 | 110 | (a) You must give any other recipients of the Work or 111 | Derivative Works a copy of this License; and 112 | 113 | (b) You must cause any modified files to carry prominent notices 114 | stating that You changed the files; and 115 | 116 | (c) You must retain, in the Source form of any Derivative Works 117 | that You distribute, all copyright, patent, trademark, and 118 | attribution notices from the Source form of the Work, 119 | excluding those notices that do not pertain to any part of 120 | the Derivative Works; and 121 | 122 | (d) If the Work includes a "NOTICE" text file as part of its 123 | distribution, then any Derivative Works that You distribute must 124 | include a readable copy of the attribution notices contained 125 | within such NOTICE file, excluding those notices that do not 126 | pertain to any part of the Derivative Works, in at least one 127 | of the following places: within a NOTICE text file distributed 128 | as part of the Derivative Works; within the Source form or 129 | documentation, if provided along with the Derivative Works; or, 130 | within a display generated by the Derivative Works, if and 131 | wherever such third-party notices normally appear. The contents 132 | of the NOTICE file are for informational purposes only and 133 | do not modify the License. You may add Your own attribution 134 | notices within Derivative Works that You distribute, alongside 135 | or as an addendum to the NOTICE text from the Work, provided 136 | that such additional attribution notices cannot be construed 137 | as modifying the License. 138 | 139 | You may add Your own copyright statement to Your modifications and 140 | may provide additional or different license terms and conditions 141 | for use, reproduction, or distribution of Your modifications, or 142 | for any such Derivative Works as a whole, provided Your use, 143 | reproduction, and distribution of the Work otherwise complies with 144 | the conditions stated in this License. 145 | 146 | 5. Submission of Contributions. Unless You explicitly state otherwise, 147 | any Contribution intentionally submitted for inclusion in the Work 148 | by You to the Licensor shall be under the terms and conditions of 149 | this License, without any additional terms or conditions. 150 | Notwithstanding the above, nothing herein shall supersede or modify 151 | the terms of any separate license agreement you may have executed 152 | with Licensor regarding such Contributions. 153 | 154 | 6. Trademarks. This License does not grant permission to use the trade 155 | names, trademarks, service marks, or product names of the Licensor, 156 | except as required for reasonable and customary use in describing the 157 | origin of the Work and reproducing the content of the NOTICE file. 158 | 159 | 7. Disclaimer of Warranty. Unless required by applicable law or 160 | agreed to in writing, Licensor provides the Work (and each 161 | Contributor provides its Contributions) on an "AS IS" BASIS, 162 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 163 | implied, including, without limitation, any warranties or conditions 164 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 165 | PARTICULAR PURPOSE. You are solely responsible for determining the 166 | appropriateness of using or redistributing the Work and assume any 167 | risks associated with Your exercise of permissions under this License. 168 | 169 | 8. Limitation of Liability. In no event and under no legal theory, 170 | whether in tort (including negligence), contract, or otherwise, 171 | unless required by applicable law (such as deliberate and grossly 172 | negligent acts) or agreed to in writing, shall any Contributor be 173 | liable to You for damages, including any direct, indirect, special, 174 | incidental, or consequential damages of any character arising as a 175 | result of this License or out of the use or inability to use the 176 | Work (including but not limited to damages for loss of goodwill, 177 | work stoppage, computer failure or malfunction, or any and all 178 | other commercial damages or losses), even if such Contributor 179 | has been advised of the possibility of such damages. 180 | 181 | 9. Accepting Warranty or Additional Liability. While redistributing 182 | the Work or Derivative Works thereof, You may choose to offer, 183 | and charge a fee for, acceptance of support, warranty, indemnity, 184 | or other liability obligations and/or rights consistent with this 185 | License. However, in accepting such obligations, You may act only 186 | on Your own behalf and on Your sole responsibility, not on behalf 187 | of any other Contributor, and only if You agree to indemnify, 188 | defend, and hold each Contributor harmless for any liability 189 | incurred by, or claims asserted against, such Contributor by reason 190 | of your accepting any such warranty or additional liability. 191 | 192 | END OF TERMS AND CONDITIONS 193 | 194 | APPENDIX: How to apply the Apache License to your work. 195 | 196 | To apply the Apache License to your work, attach the following 197 | boilerplate notice, with the fields enclosed by brackets "[]" 198 | replaced with your own identifying information. (Don't include 199 | the brackets!) The text should be enclosed in the appropriate 200 | comment syntax for the file format. We also recommend that a 201 | file or class name and description of purpose be included on the 202 | same "printed page" as the copyright notice for easier 203 | identification within third-party archives. 204 | 205 | Copyright [yyyy] [name of copyright owner] 206 | 207 | Licensed under the Apache License, Version 2.0 (the "License"); 208 | you may not use this file except in compliance with the License. 209 | You may obtain a copy of the License at 210 | 211 | http://www.apache.org/licenses/LICENSE-2.0 212 | 213 | Unless required by applicable law or agreed to in writing, software 214 | distributed under the License is distributed on an "AS IS" BASIS, 215 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 216 | See the License for the specific language governing permissions and 217 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![TestFlight](https://s3.amazonaws.com/github-ds/TestFlight.png) 2 | 3 | ### Appcelerator Titanium TestFlight Module for iOS 4 | 5 | This is a TestFlight module for iOS originally developed by Rick Blalock and Matt Apperson. Also needing to be thanked is 6 | the core TestFlight development team who assisted in the making of this module. Without their help this wouldn't have been 7 | possible. 8 | 9 | [TestFlight](http://www.testflightapp.com/) makes it easy to upload and distribute iOS builds over-the-air to your 10 | teams of testers and developers. 11 | 12 | - - - 13 | 14 | * Features 15 | * Supported/Tested Platforms 16 | * Basic Usage 17 | * ToDo 18 | * How To Help 19 | * License 20 | * Copyright 21 | 22 | - - - 23 | 24 | ### Features 25 | 26 | * Sessions - Discover how testers are using your application. Watch as they progress and take unexpected turns. 27 | * In-App Questions - The most effective way to get tester feedback. Get the answers you need by asking questions the moment a checkpoint is passed. 28 | * Remote Logging - NSLog(@"All your logs are belong to us"); //No extra work: NSLogs are instantly attached to your session and crash reports. 29 | * Crash Reports - Reported in realtime, with environment snapshots and full session activity. 30 | * Checkpoints - Place checkpoints throughout your app to see how far testers are getting, confirm which areas are popular and reveal ones that need more testing. 31 | * In-App Updates - Prompt testers to install the latest version of your app. This is the easiest way for your testers to take advantage of installing on the fly. 32 | 33 | - - - 34 | 35 | ### Supported/Tested Platforms 36 | 37 | This module is only tested against the **latest** Titanium Mobile SDK's. It is not, nor will it ever be tested against the 38 | Titanium Mobile SDK's from the Continuous Integration server (aka CI Builds). 39 | 40 | |TestFlight Module Version|Titanium Mobile SDK Version 41 | |:---------|:----------| 42 | |1.0|1.7.2, 1.7.3| 43 | |1.1|1.7.2, 1.7.3, 1.7.5| 44 | 45 | - - - 46 | 47 | ### Basic Usage: 48 | ~~~ 49 | Titanium.UI.setBackgroundColor('#eee'); 50 | 51 | // Pull in the Module 52 | var testflight = require('ti.testflight'); 53 | Ti.API.info("module is => " + testflight); 54 | 55 | 56 | // Set the team token here (REQUIRED) 57 | testflight.token('YourTeamTokenHere'); 58 | 59 | var tabGroup = Titanium.UI.createTabGroup(); 60 | 61 | var win = Titanium.UI.createWindow({ 62 | title: 'TestFlight Module', 63 | backgroundColor:'#fff' 64 | }); 65 | var tab1 = Titanium.UI.createTab({ 66 | icon: 'KS_nav_views.png', 67 | title: 'TestFlight', 68 | window: win 69 | }); 70 | 71 | var data = [ 72 | { title: 'Checkpoint 1', uid: 1 }, 73 | { title: 'Checkpoint 2', uid: 2 }, 74 | { title: 'Checkpoint 3', uid: 3 }, 75 | { title: 'Checkpoint 4', uid: 4 } 76 | ]; 77 | 78 | var table = Ti.UI.createTableView({ data: data }); 79 | 80 | table.addEventListener('click', function(_event) { 81 | // Set a checkpoint up here 82 | testflight.checkpoint('Checkpoint' + _event.rowData.uid); 83 | 84 | var newwin = Ti.UI.createWindow({ title: _event.row.title }); 85 | 86 | var label = Ti.UI.createLabel({ text: 'Checkpoint ' + _event.rowData.uid, textAlign: 'center' }); 87 | var btn = Ti.UI.createButton({ title: 'Feedback' }); 88 | 89 | btn.addEventListener('click', function() { 90 | // Open the feedback window 91 | testflight.feedback(); 92 | }); 93 | 94 | newwin.add(label); 95 | newwin.rightNavButton = btn; 96 | tab1.open(newwin, { animated: true }); 97 | }); 98 | 99 | win.add(table); 100 | 101 | tabGroup.addTab(tab1); 102 | tabGroup.open(); 103 | ~~~ 104 | 105 | - - - 106 | 107 | ### ToDo 108 | 109 | * Need to write more examples to better show off features. 110 | 111 | - - - 112 | 113 | ### How To Help 114 | 1. Go to github and click the “fork” button. 115 | 1. git clone git@github.com:DamageStudios/testflight-module.git 116 | 1. cd testflight-module 117 | 1. Make your changes/edits 118 | 1. git status 119 | 1. git commit -a 120 | 1. git push 121 | 1. go back to github and click the “pull request” button. 122 | 123 | - - - 124 | 125 | ### License 126 | 127 | Apache Public License version 2 128 | 129 | - - - 130 | 131 | ### Copyright 132 | 133 | Copyright (c) 2011 by Damage Studios LLC. All Rights Reserved. 134 | 135 | Appcelerator is a registered trademark of Appcelerator, Inc. Appcelerator Titanium is a trademark of Appcelerator, Inc. 136 | 137 | TestFlight is a registered trademark of TestFlight -------------------------------------------------------------------------------- /TestFlight.h: -------------------------------------------------------------------------------- 1 | // 2 | // TestFlight.h 3 | // libTestFlight 4 | // 5 | // Created by Jonathan Janzen on 06/11/11. 6 | // Copyright 2011 TestFlight. All rights reserved. 7 | 8 | #import 9 | #define TESTFLIGHT_SDK_VERSION @"1.0" 10 | #undef TFLog 11 | 12 | #if __cplusplus 13 | extern "C" { 14 | #endif 15 | void TFLog(NSString *format, ...); 16 | #if __cplusplus 17 | } 18 | #endif 19 | 20 | /** 21 | * TestFlight object 22 | * All methods are class level 23 | */ 24 | @interface TestFlight : NSObject { 25 | 26 | } 27 | 28 | /** 29 | * Add custom environment information 30 | * If you want to track custom information such as a user name from your application you can add it here 31 | * 32 | * @param information A string containing the environment you are storing 33 | * @param key The key to store the information with 34 | */ 35 | + (void)addCustomEnvironmentInformation:(NSString *)information forKey:(NSString*)key; 36 | 37 | /** 38 | * Starts a TestFlight session 39 | * 40 | * @param teamToken Will be your team token obtained from https://testflightapp.com/dashboard/team/edit/ 41 | */ 42 | + (void)takeOff:(NSString *)teamToken; 43 | 44 | /** 45 | * Sets custom options 46 | * 47 | * @param options NSDictionary containing the options you want to set available options are described below 48 | * 49 | * Option Accepted Values Description 50 | * reinstallCrashHandlers [ NSNumber numberWithBool:YES ] Reinstalls crash handlers, to be used if a third party 51 | * library installs crash handlers overtop of the TestFlight Crash Handlers 52 | * logToConsole [ NSNumber numberWithBool:YES ] YES - default, sends log statements to Apple System Log and TestFlight log 53 | * NO - sends log statements to TestFlight log only 54 | * logToSTDERR [ NSNumber numberWithBool:YES ] YES - default, sends log statements to STDERR when debugger is attached 55 | * NO - sends log statements to TestFlight log only 56 | * sendLogOnlyOnCrash [ NSNumber numberWithBool:YES ] NO - default, sends logs to TestFlight at the end of every session 57 | * YES - sends logs statements to TestFlight only if there was a crash 58 | */ 59 | + (void)setOptions:(NSDictionary*)options; 60 | 61 | /** 62 | * Track when a user has passed a checkpoint after the flight has taken off. Eg. passed level 1, posted high score 63 | * 64 | * @param checkpointName The name of the checkpoint, this should be a static string 65 | */ 66 | + (void)passCheckpoint:(NSString *)checkpointName; 67 | 68 | /** 69 | * Opens a feedback window that is not attached to a checkpoint 70 | */ 71 | + (void)openFeedbackView; 72 | 73 | /** 74 | * Submits custom feedback to the site. Sends the data in feedback to the site. This is to be used as the method to submit 75 | * feedback from custom feedback forms. 76 | * 77 | * @param feedback Your users feedback, method does nothing if feedback is nil 78 | */ 79 | + (void)submitFeedback:(NSString*)feedback; 80 | 81 | /** 82 | * Sets the Device Identifier. 83 | * The SDK no longer obtains the device unique identifier. This method should only be used during testing so that you can 84 | * identify a testers test data with them. If you do not provide the identifier you will still see all session data, with checkpoints 85 | * and logs, but the data will be anonymized. 86 | * It is recommended that you only use this method during testing. We also recommended that you wrap this method with a pre-processor 87 | * directive that is only active for non-app store builds. 88 | * #ifndef RELEASE 89 | * [TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]]; 90 | * #endif 91 | * 92 | * @param deviceIdentifier The current devices device identifier 93 | */ 94 | + (void)setDeviceIdentifier:(NSString*)deviceIdentifer; 95 | 96 | @end 97 | -------------------------------------------------------------------------------- /TiTestflight_Prefix.pch: -------------------------------------------------------------------------------- 1 | 2 | #ifdef __OBJC__ 3 | #import 4 | #endif 5 | -------------------------------------------------------------------------------- /assets/README: -------------------------------------------------------------------------------- 1 | Place your assets like PNG files in this directory and they will be packaged with your module. 2 | 3 | If you create a file named ti.testflight.js in this directory, it will be 4 | compiled and used as your module. This allows you to run pure Javascript 5 | modules that are pre-compiled. 6 | 7 | -------------------------------------------------------------------------------- /build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Appcelerator Titanium Module Packager 4 | # 5 | # 6 | import os, sys, glob, string 7 | import zipfile 8 | from datetime import date 9 | import re 10 | 11 | cwd = os.path.abspath(os.path.dirname(sys._getframe(0).f_code.co_filename)) 12 | os.chdir(cwd) 13 | required_module_keys = ['name','version','moduleid','description','copyright','license','copyright','platform','minsdk'] 14 | module_defaults = { 15 | 'description':'My module', 16 | 'author': 'Your Name', 17 | 'license' : 'Specify your license', 18 | 'copyright' : 'Copyright (c) %s by Your Company' % str(date.today().year), 19 | } 20 | module_license_default = "TODO: place your license here and we'll include it in the module distribution" 21 | 22 | def replace_vars(config,token): 23 | seen = set() 24 | seen_add = seen.add 25 | for key in [ x for x in re.findall('\$\(([\w_]+)\)', token) if x not in seen and not seen_add(x)]: 26 | if config.has_key(key): 27 | token = token.replace('$(%s)' % key, config[key]) 28 | return token 29 | 30 | def read_ti_xcconfig(): 31 | contents = open(os.path.join(cwd,'titanium.xcconfig')).read() 32 | config = {} 33 | for line in contents.splitlines(False): 34 | line = line.strip() 35 | if line[0:2]=='//': continue 36 | idx = line.find('=') 37 | if idx > 0: 38 | key = line[0:idx].strip() 39 | value = line[idx+1:].strip() 40 | config[key] = replace_vars(config,value) 41 | return config 42 | 43 | def generate_doc(config): 44 | docdir = os.path.join(cwd,'documentation') 45 | if not os.path.exists(docdir): 46 | print "Couldn't find documentation file at: %s" % docdir 47 | return None 48 | sdk = config['TITANIUM_SDK'] 49 | support_dir = os.path.join(sdk,'module','support') 50 | sys.path.append(support_dir) 51 | import markdown2 52 | documentation = [] 53 | for f in os.listdir(docdir): 54 | if not f.endswith('.md'): continue 55 | md = open(os.path.join(docdir,f)).read() 56 | html = markdown2.markdown(md) 57 | documentation.append({f:html}); 58 | return documentation 59 | 60 | def compile_js(manifest,config): 61 | js_file = os.path.join(cwd,'assets','ti.testflight.js') 62 | if not os.path.exists(js_file): return 63 | 64 | sdk = config['TITANIUM_SDK'] 65 | iphone_dir = os.path.join(sdk,'iphone') 66 | sys.path.insert(0,iphone_dir) 67 | from compiler import Compiler 68 | 69 | path = os.path.basename(js_file) 70 | metadata = Compiler.make_function_from_file(path,js_file) 71 | method = metadata['method'] 72 | eq = path.replace('.','_') 73 | method = ' return %s;' % method 74 | 75 | f = os.path.join(cwd,'Classes','TiTestflightModuleAssets.m') 76 | c = open(f).read() 77 | idx = c.find('return ') 78 | before = c[0:idx] 79 | after = """ 80 | } 81 | 82 | @end 83 | """ 84 | newc = before + method + after 85 | 86 | if newc!=c: 87 | x = open(f,'w') 88 | x.write(newc) 89 | x.close() 90 | 91 | def die(msg): 92 | print msg 93 | sys.exit(1) 94 | 95 | def warn(msg): 96 | print "[WARN] %s" % msg 97 | 98 | def validate_license(): 99 | c = open(os.path.join(cwd,'LICENSE')).read() 100 | if c.find(module_license_default)!=1: 101 | warn('please update the LICENSE file with your license text before distributing') 102 | 103 | def validate_manifest(): 104 | path = os.path.join(cwd,'manifest') 105 | f = open(path) 106 | if not os.path.exists(path): die("missing %s" % path) 107 | manifest = {} 108 | for line in f.readlines(): 109 | line = line.strip() 110 | if line[0:1]=='#': continue 111 | if line.find(':') < 0: continue 112 | key,value = line.split(':') 113 | manifest[key.strip()]=value.strip() 114 | for key in required_module_keys: 115 | if not manifest.has_key(key): die("missing required manifest key '%s'" % key) 116 | if module_defaults.has_key(key): 117 | defvalue = module_defaults[key] 118 | curvalue = manifest[key] 119 | if curvalue==defvalue: warn("please update the manifest key: '%s' to a non-default value" % key) 120 | return manifest,path 121 | 122 | ignoreFiles = ['.DS_Store','.gitignore','libTitanium.a','titanium.jar','README','ti.testflight.js'] 123 | ignoreDirs = ['.DS_Store','.svn','.git','CVSROOT'] 124 | 125 | def zip_dir(zf,dir,basepath,ignore=[]): 126 | for root, dirs, files in os.walk(dir): 127 | for name in ignoreDirs: 128 | if name in dirs: 129 | dirs.remove(name) # don't visit ignored directories 130 | for file in files: 131 | if file in ignoreFiles: continue 132 | e = os.path.splitext(file) 133 | if len(e)==2 and e[1]=='.pyc':continue 134 | from_ = os.path.join(root, file) 135 | to_ = from_.replace(dir, basepath, 1) 136 | zf.write(from_, to_) 137 | 138 | def glob_libfiles(): 139 | files = [] 140 | for libfile in glob.glob('build/**/*.a'): 141 | if libfile.find('Release-')!=-1: 142 | files.append(libfile) 143 | return files 144 | 145 | def build_module(manifest,config): 146 | rc = os.system("xcodebuild -sdk iphoneos -configuration Release") 147 | if rc != 0: 148 | die("xcodebuild failed") 149 | rc = os.system("xcodebuild -sdk iphonesimulator -configuration Release") 150 | if rc != 0: 151 | die("xcodebuild failed") 152 | # build the merged library using lipo 153 | moduleid = manifest['moduleid'] 154 | libpaths = '' 155 | for libfile in glob_libfiles(): 156 | libpaths+='%s ' % libfile 157 | 158 | os.system("lipo %s -create -output build/lib%s.a" %(libpaths,moduleid)) 159 | 160 | def package_module(manifest,mf,config): 161 | name = manifest['name'].lower() 162 | moduleid = manifest['moduleid'].lower() 163 | version = manifest['version'] 164 | modulezip = '%s-iphone-%s.zip' % (moduleid,version) 165 | if os.path.exists(modulezip): os.remove(modulezip) 166 | zf = zipfile.ZipFile(modulezip, 'w', zipfile.ZIP_DEFLATED) 167 | modulepath = 'modules/iphone/%s/%s' % (moduleid,version) 168 | zf.write(mf,'%s/manifest' % modulepath) 169 | libname = 'lib%s.a' % moduleid 170 | zf.write('build/%s' % libname, '%s/%s' % (modulepath,libname)) 171 | docs = generate_doc(config) 172 | if docs!=None: 173 | for doc in docs: 174 | for f, html in doc.iteritems(): 175 | filename = string.replace(f,'.md','.html') 176 | zf.writestr('%s/documentation/%s'%(modulepath,filename),html) 177 | for dn in ('assets','example','platform'): 178 | if os.path.exists(dn): 179 | zip_dir(zf,dn,'%s/%s' % (modulepath,dn),['README']) 180 | zf.write('LICENSE','%s/LICENSE' % modulepath) 181 | zf.write('module.xcconfig','%s/module.xcconfig' % modulepath) 182 | zf.close() 183 | 184 | 185 | if __name__ == '__main__': 186 | manifest,mf = validate_manifest() 187 | validate_license() 188 | config = read_ti_xcconfig() 189 | compile_js(manifest,config) 190 | build_module(manifest,config) 191 | package_module(manifest,mf,config) 192 | sys.exit(0) 193 | 194 | -------------------------------------------------------------------------------- /documentation/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/documentation/.DS_Store -------------------------------------------------------------------------------- /documentation/index.md: -------------------------------------------------------------------------------- 1 | # TestFlight Module 2 | 3 | ## Description 4 | 5 | Testflightapp.com SDK integration 6 | 7 | Note: TestFlight requires that your device be registered with TestFlight. This means that the module will not work in the iOS simulator. 8 | 9 | ## Accessing the testflight Module 10 | 11 | To access this module from JavaScript, you would do the following: 12 | 13 | var testflight = require("ti.testflight"); 14 | 15 | The testflight variable is a reference to the Module object. 16 | 17 | ## Reference 18 | 19 | ### testflight.token('') 20 | 21 | #### Arguments 22 | 23 | Takes one argument, a string which is the Team token that will be used for your builds (the team token is NOT the API token) 24 | 25 | ### testflight.customInfo('', '') 26 | 27 | #### Arguments 28 | 29 | Takes two arguments, the first being a string for the key, the second a string for the value. 30 | These are environment based details, so it won't track changes in the data. 31 | For example you might use this for a username of the tester within your app. 32 | 33 | ### testflight.checkpoint('') 34 | 35 | #### Arguments 36 | 37 | Takes one argument, a string which is the name for your checkpoint 38 | 39 | ### testflight.feedback() 40 | 41 | Show the feedback dialog 42 | 43 | ### testflight.submitFeedback('') 44 | 45 | #### Arguments 46 | 47 | Takes one argument, a string you want recorded as feedback. Use this if you want to make a custom feedback form. 48 | 49 | ## Usage 50 | 51 | var testflight = require('ti.testflight'); 52 | 53 | testflight.token('YourTeamTokenHere'); 54 | 55 | testflight.checkpoint('SomeCheckpoint'); 56 | 57 | testflight.feedback(); 58 | 59 | testflight.sendFeedback('Text from your own custom form'); 60 | 61 | ## Authors 62 | 63 | Rick Blalock 64 | Twitter: rblalock 65 | 66 | Matt Apperson 67 | Twitter: mattapperson 68 | 69 | ## License 70 | 71 | Apache Public License 2.0 -------------------------------------------------------------------------------- /example/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/example/.DS_Store -------------------------------------------------------------------------------- /example/app.js: -------------------------------------------------------------------------------- 1 | // AVAILABLE METHODS: 2 | // var testflight = require('com.testflight'); 3 | // testflight.token('YourTeamTokenHere'); 4 | // testflight.checkpoint('SomeCheckpoint'); 5 | // testflight.feedback(); 6 | // testflight.submitFeedback("YourFeedbackHere"); 7 | // testflight.remoteLog("YourInfoLogHere"); 8 | 9 | Titanium.UI.setBackgroundColor('#eee'); 10 | 11 | // Pull in the Module 12 | var testflight = require('ti.testflight'); 13 | Ti.API.info("module is => " + testflight); 14 | 15 | 16 | // Set the team token here (REQUIRED) 17 | // Add a boolean as a second parameter to enable test mode (submits UDID, OPTIONAL) 18 | testflight.token('YourTeamTokenHere', true); 19 | 20 | var tabGroup = Titanium.UI.createTabGroup(); 21 | 22 | var win = Titanium.UI.createWindow({ 23 | title: 'TestFlight Module', 24 | backgroundColor:'#fff' 25 | }); 26 | var tab1 = Titanium.UI.createTab({ 27 | icon: 'KS_nav_views.png', 28 | title: 'TestFlight', 29 | window: win 30 | }); 31 | 32 | var data = [ 33 | { title: 'Checkpoint 1', uid: 1 }, 34 | { title: 'Checkpoint 2', uid: 2 }, 35 | { title: 'Checkpoint 3', uid: 3 }, 36 | { title: 'Checkpoint 4', uid: 4 } 37 | ]; 38 | 39 | var table = Ti.UI.createTableView({ data: data }); 40 | 41 | table.addEventListener('click', function(_event) { 42 | // Set a checkpoint up here 43 | testflight.checkpoint('Checkpoint' + _event.rowData.uid); 44 | 45 | var newwin = Ti.UI.createWindow({ title: _event.row.title }); 46 | 47 | var label = Ti.UI.createLabel({ text: 'Checkpoint ' + _event.rowData.uid, textAlign: 'center' }); 48 | var btn = Ti.UI.createButton({ title: 'Feedback' }); 49 | 50 | btn.addEventListener('click', function() { 51 | // Open the feedback window 52 | testflight.feedback(); 53 | // Logging remotely in Testflight's Session Log 54 | testflight.remoteLog('Feedback View opened.'); 55 | }); 56 | 57 | newwin.add(label); 58 | newwin.rightNavButton = btn; 59 | tab1.open(newwin, { animated: true }); 60 | }); 61 | 62 | win.add(table); 63 | 64 | tabGroup.addTab(tab1); 65 | tabGroup.open(); -------------------------------------------------------------------------------- /hooks/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/hooks/.DS_Store -------------------------------------------------------------------------------- /hooks/README: -------------------------------------------------------------------------------- 1 | These files are not yet supported as of 1.4.0 but will be in a near future release. 2 | -------------------------------------------------------------------------------- /hooks/add.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # This is the module project add hook that will be 4 | # called when your module is added to a project 5 | # 6 | import os, sys 7 | 8 | def dequote(s): 9 | if s[0:1] == '"': 10 | return s[1:-1] 11 | return s 12 | 13 | def main(args,argc): 14 | # You will get the following command line arguments 15 | # in the following order: 16 | # 17 | # project_dir = the full path to the project root directory 18 | # project_type = the type of project (desktop, mobile, ipad) 19 | # project_name = the name of the project 20 | # 21 | project_dir = dequote(os.path.expanduser(args[1])) 22 | project_type = dequote(args[2]) 23 | project_name = dequote(args[3]) 24 | 25 | # TODO: write your add hook here (optional) 26 | 27 | 28 | # exit 29 | sys.exit(0) 30 | 31 | 32 | 33 | if __name__ == '__main__': 34 | main(sys.argv,len(sys.argv)) 35 | 36 | -------------------------------------------------------------------------------- /hooks/install.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # This is the module install hook that will be 4 | # called when your module is first installed 5 | # 6 | import os, sys 7 | 8 | def main(args,argc): 9 | 10 | # TODO: write your install hook here (optional) 11 | 12 | # exit 13 | sys.exit(0) 14 | 15 | 16 | 17 | if __name__ == '__main__': 18 | main(sys.argv,len(sys.argv)) 19 | 20 | -------------------------------------------------------------------------------- /hooks/remove.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # This is the module project remove hook that will be 4 | # called when your module is remove from a project 5 | # 6 | import os, sys 7 | 8 | def dequote(s): 9 | if s[0:1] == '"': 10 | return s[1:-1] 11 | return s 12 | 13 | def main(args,argc): 14 | # You will get the following command line arguments 15 | # in the following order: 16 | # 17 | # project_dir = the full path to the project root directory 18 | # project_type = the type of project (desktop, mobile, ipad) 19 | # project_name = the name of the project 20 | # 21 | project_dir = dequote(os.path.expanduser(args[1])) 22 | project_type = dequote(args[2]) 23 | project_name = dequote(args[3]) 24 | 25 | # TODO: write your remove hook here (optional) 26 | 27 | # exit 28 | sys.exit(0) 29 | 30 | 31 | 32 | if __name__ == '__main__': 33 | main(sys.argv,len(sys.argv)) 34 | 35 | -------------------------------------------------------------------------------- /hooks/uninstall.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # This is the module uninstall hook that will be 4 | # called when your module is uninstalled 5 | # 6 | import os, sys 7 | 8 | def main(args,argc): 9 | 10 | # TODO: write your uninstall hook here (optional) 11 | 12 | # exit 13 | sys.exit(0) 14 | 15 | 16 | if __name__ == '__main__': 17 | main(sys.argv,len(sys.argv)) 18 | 19 | -------------------------------------------------------------------------------- /libTestFlight.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/libTestFlight.a -------------------------------------------------------------------------------- /manifest: -------------------------------------------------------------------------------- 1 | # 2 | # this is your module manifest and used by Titanium 3 | # during compilation, packaging, distribution, etc. 4 | # 5 | version: 1.2 6 | description: A module to implement the TestFlight SDK 7 | author: Tony Guntharp 8 | license: See LICENSE file 9 | copyright: Copyright (c) 2011 Damage Studios LLC 10 | 11 | 12 | # these should not be edited 13 | name: testflight 14 | moduleid: ti.testflight 15 | guid: 4946b1e8-362c-46a8-a6fc-bbe40e892ecc 16 | platform: iphone 17 | minsdk: 1.8.0.1 18 | -------------------------------------------------------------------------------- /module.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // PLACE ANY BUILD DEFINITIONS IN THIS FILE AND THEY WILL BE 3 | // PICKED UP DURING THE APP BUILD FOR YOUR MODULE 4 | // 5 | // see the following webpage for instructions on the settings 6 | // for this file: 7 | // http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeBuildSystem/400-Build_Configurations/build_configs.html 8 | // 9 | 10 | // 11 | // How to add a Framework (example) 12 | // 13 | // OTHER_LDFLAGS=$(inherited) -framework Foo 14 | // 15 | // Adding a framework for a specific version(s) of iPhone: 16 | // 17 | // OTHER_LDFLAGS[sdk=iphoneos4*]=$(inherited) -framework Foo 18 | // OTHER_LDFLAGS[sdk=iphonesimulator4*]=$(inherited) -framework Foo 19 | // 20 | // 21 | // How to add a compiler define: 22 | // 23 | // OTHER_CFLAGS=$(inherited) -DFOO=1 24 | // 25 | // 26 | // IMPORTANT NOTE: always use $(inherited) in your overrides 27 | // 28 | -------------------------------------------------------------------------------- /platform/README: -------------------------------------------------------------------------------- 1 | You can place platform-specific files here in sub-folders named "android" and/or "iphone", just as you can with normal Titanium Mobile SDK projects. Any folders and files you place here will be merged with the platform-specific files in a Titanium Mobile project that uses this module. 2 | 3 | When a Titanium Mobile project that uses this module is built, the files from this platform/ folder will be treated the same as files (if any) from the Titanium Mobile project's platform/ folder. 4 | -------------------------------------------------------------------------------- /testflight.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXAggregateTarget section */ 10 | 24416B8111C4CA220047AFDD /* Build & Test */ = { 11 | isa = PBXAggregateTarget; 12 | buildConfigurationList = 24416B8A11C4CA520047AFDD /* Build configuration list for PBXAggregateTarget "Build & Test" */; 13 | buildPhases = ( 14 | 24416B8011C4CA220047AFDD /* ShellScript */, 15 | ); 16 | dependencies = ( 17 | 24416B8511C4CA280047AFDD /* PBXTargetDependency */, 18 | ); 19 | name = "Build & Test"; 20 | productName = "Build & test"; 21 | }; 22 | /* End PBXAggregateTarget section */ 23 | 24 | /* Begin PBXBuildFile section */ 25 | 24DD6CF91134B3F500162E58 /* TiTestflightModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 24DD6CF71134B3F500162E58 /* TiTestflightModule.h */; }; 26 | 24DD6CFA1134B3F500162E58 /* TiTestflightModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 24DD6CF81134B3F500162E58 /* TiTestflightModule.m */; }; 27 | 24DE9E1111C5FE74003F90F6 /* TiTestflightModuleAssets.h in Headers */ = {isa = PBXBuildFile; fileRef = 24DE9E0F11C5FE74003F90F6 /* TiTestflightModuleAssets.h */; }; 28 | 24DE9E1211C5FE74003F90F6 /* TiTestflightModuleAssets.m in Sources */ = {isa = PBXBuildFile; fileRef = 24DE9E1011C5FE74003F90F6 /* TiTestflightModuleAssets.m */; }; 29 | 2CE5E4B3141F854A00245C50 /* TestFlight.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CE5E4B2141F854A00245C50 /* TestFlight.h */; }; 30 | 2CE5E4B6141F855000245C50 /* libTestFlight.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CE5E4B5141F855000245C50 /* libTestFlight.a */; }; 31 | AA747D9F0F9514B9006C5449 /* TiTestflight_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* TiTestflight_Prefix.pch */; }; 32 | AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; 33 | /* End PBXBuildFile section */ 34 | 35 | /* Begin PBXContainerItemProxy section */ 36 | 24416B8411C4CA280047AFDD /* PBXContainerItemProxy */ = { 37 | isa = PBXContainerItemProxy; 38 | containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; 39 | proxyType = 1; 40 | remoteGlobalIDString = D2AAC07D0554694100DB518D; 41 | remoteInfo = testflight; 42 | }; 43 | /* End PBXContainerItemProxy section */ 44 | 45 | /* Begin PBXFileReference section */ 46 | 24DD6CF71134B3F500162E58 /* TiTestflightModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TiTestflightModule.h; path = Classes/TiTestflightModule.h; sourceTree = ""; }; 47 | 24DD6CF81134B3F500162E58 /* TiTestflightModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TiTestflightModule.m; path = Classes/TiTestflightModule.m; sourceTree = ""; }; 48 | 24DD6D1B1134B66800162E58 /* titanium.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = titanium.xcconfig; sourceTree = ""; }; 49 | 24DE9E0F11C5FE74003F90F6 /* TiTestflightModuleAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TiTestflightModuleAssets.h; path = Classes/TiTestflightModuleAssets.h; sourceTree = ""; }; 50 | 24DE9E1011C5FE74003F90F6 /* TiTestflightModuleAssets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TiTestflightModuleAssets.m; path = Classes/TiTestflightModuleAssets.m; sourceTree = ""; }; 51 | 2CE5E4B2141F854A00245C50 /* TestFlight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFlight.h; sourceTree = ""; }; 52 | 2CE5E4B5141F855000245C50 /* libTestFlight.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libTestFlight.a; sourceTree = ""; }; 53 | AA747D9E0F9514B9006C5449 /* TiTestflight_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TiTestflight_Prefix.pch; sourceTree = SOURCE_ROOT; }; 54 | AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 55 | D2AAC07E0554694100DB518D /* libTiTestflight.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTiTestflight.a; sourceTree = BUILT_PRODUCTS_DIR; }; 56 | /* End PBXFileReference section */ 57 | 58 | /* Begin PBXFrameworksBuildPhase section */ 59 | D2AAC07C0554694100DB518D /* Frameworks */ = { 60 | isa = PBXFrameworksBuildPhase; 61 | buildActionMask = 2147483647; 62 | files = ( 63 | AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */, 64 | 2CE5E4B6141F855000245C50 /* libTestFlight.a in Frameworks */, 65 | ); 66 | runOnlyForDeploymentPostprocessing = 0; 67 | }; 68 | /* End PBXFrameworksBuildPhase section */ 69 | 70 | /* Begin PBXGroup section */ 71 | 034768DFFF38A50411DB9C8B /* Products */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | D2AAC07E0554694100DB518D /* libTiTestflight.a */, 75 | ); 76 | name = Products; 77 | sourceTree = ""; 78 | }; 79 | 0867D691FE84028FC02AAC07 /* testflight */ = { 80 | isa = PBXGroup; 81 | children = ( 82 | 2CE5E4B2141F854A00245C50 /* TestFlight.h */, 83 | 08FB77AEFE84172EC02AAC07 /* Classes */, 84 | 32C88DFF0371C24200C91783 /* Other Sources */, 85 | 0867D69AFE84028FC02AAC07 /* Frameworks */, 86 | 034768DFFF38A50411DB9C8B /* Products */, 87 | ); 88 | name = testflight; 89 | sourceTree = ""; 90 | }; 91 | 0867D69AFE84028FC02AAC07 /* Frameworks */ = { 92 | isa = PBXGroup; 93 | children = ( 94 | 2CE5E4B5141F855000245C50 /* libTestFlight.a */, 95 | AACBBE490F95108600F1A2B1 /* Foundation.framework */, 96 | ); 97 | name = Frameworks; 98 | sourceTree = ""; 99 | }; 100 | 08FB77AEFE84172EC02AAC07 /* Classes */ = { 101 | isa = PBXGroup; 102 | children = ( 103 | 24DE9E0F11C5FE74003F90F6 /* TiTestflightModuleAssets.h */, 104 | 24DE9E1011C5FE74003F90F6 /* TiTestflightModuleAssets.m */, 105 | 24DD6CF71134B3F500162E58 /* TiTestflightModule.h */, 106 | 24DD6CF81134B3F500162E58 /* TiTestflightModule.m */, 107 | ); 108 | name = Classes; 109 | sourceTree = ""; 110 | }; 111 | 32C88DFF0371C24200C91783 /* Other Sources */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | AA747D9E0F9514B9006C5449 /* TiTestflight_Prefix.pch */, 115 | 24DD6D1B1134B66800162E58 /* titanium.xcconfig */, 116 | ); 117 | name = "Other Sources"; 118 | sourceTree = ""; 119 | }; 120 | /* End PBXGroup section */ 121 | 122 | /* Begin PBXHeadersBuildPhase section */ 123 | D2AAC07A0554694100DB518D /* Headers */ = { 124 | isa = PBXHeadersBuildPhase; 125 | buildActionMask = 2147483647; 126 | files = ( 127 | AA747D9F0F9514B9006C5449 /* TiTestflight_Prefix.pch in Headers */, 128 | 24DD6CF91134B3F500162E58 /* TiTestflightModule.h in Headers */, 129 | 24DE9E1111C5FE74003F90F6 /* TiTestflightModuleAssets.h in Headers */, 130 | 2CE5E4B3141F854A00245C50 /* TestFlight.h in Headers */, 131 | ); 132 | runOnlyForDeploymentPostprocessing = 0; 133 | }; 134 | /* End PBXHeadersBuildPhase section */ 135 | 136 | /* Begin PBXNativeTarget section */ 137 | D2AAC07D0554694100DB518D /* testflight */ = { 138 | isa = PBXNativeTarget; 139 | buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "testflight" */; 140 | buildPhases = ( 141 | D2AAC07A0554694100DB518D /* Headers */, 142 | D2AAC07B0554694100DB518D /* Sources */, 143 | D2AAC07C0554694100DB518D /* Frameworks */, 144 | ); 145 | buildRules = ( 146 | ); 147 | dependencies = ( 148 | ); 149 | name = testflight; 150 | productName = testflight; 151 | productReference = D2AAC07E0554694100DB518D /* libTiTestflight.a */; 152 | productType = "com.apple.product-type.library.static"; 153 | }; 154 | /* End PBXNativeTarget section */ 155 | 156 | /* Begin PBXProject section */ 157 | 0867D690FE84028FC02AAC07 /* Project object */ = { 158 | isa = PBXProject; 159 | attributes = { 160 | LastUpgradeCheck = 0410; 161 | }; 162 | buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "testflight" */; 163 | compatibilityVersion = "Xcode 3.2"; 164 | developmentRegion = English; 165 | hasScannedForEncodings = 1; 166 | knownRegions = ( 167 | English, 168 | Japanese, 169 | French, 170 | German, 171 | ); 172 | mainGroup = 0867D691FE84028FC02AAC07 /* testflight */; 173 | productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; 174 | projectDirPath = ""; 175 | projectRoot = ""; 176 | targets = ( 177 | D2AAC07D0554694100DB518D /* testflight */, 178 | 24416B8111C4CA220047AFDD /* Build & Test */, 179 | ); 180 | }; 181 | /* End PBXProject section */ 182 | 183 | /* Begin PBXShellScriptBuildPhase section */ 184 | 24416B8011C4CA220047AFDD /* ShellScript */ = { 185 | isa = PBXShellScriptBuildPhase; 186 | buildActionMask = 2147483647; 187 | files = ( 188 | ); 189 | inputPaths = ( 190 | ); 191 | outputPaths = ( 192 | ); 193 | runOnlyForDeploymentPostprocessing = 0; 194 | shellPath = /bin/sh; 195 | shellScript = "# shell script goes here\n\npython \"${TITANIUM_SDK}/titanium.py\" run --dir=\"${PROJECT_DIR}\"\nexit $?\n"; 196 | }; 197 | /* End PBXShellScriptBuildPhase section */ 198 | 199 | /* Begin PBXSourcesBuildPhase section */ 200 | D2AAC07B0554694100DB518D /* Sources */ = { 201 | isa = PBXSourcesBuildPhase; 202 | buildActionMask = 2147483647; 203 | files = ( 204 | 24DD6CFA1134B3F500162E58 /* TiTestflightModule.m in Sources */, 205 | 24DE9E1211C5FE74003F90F6 /* TiTestflightModuleAssets.m in Sources */, 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | }; 209 | /* End PBXSourcesBuildPhase section */ 210 | 211 | /* Begin PBXTargetDependency section */ 212 | 24416B8511C4CA280047AFDD /* PBXTargetDependency */ = { 213 | isa = PBXTargetDependency; 214 | target = D2AAC07D0554694100DB518D /* testflight */; 215 | targetProxy = 24416B8411C4CA280047AFDD /* PBXContainerItemProxy */; 216 | }; 217 | /* End PBXTargetDependency section */ 218 | 219 | /* Begin XCBuildConfiguration section */ 220 | 1DEB921F08733DC00010E9CD /* Debug */ = { 221 | isa = XCBuildConfiguration; 222 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 223 | buildSettings = { 224 | ALWAYS_SEARCH_USER_PATHS = NO; 225 | ARCHS = ( 226 | armv6, 227 | "$(ARCHS_STANDARD_32_BIT)", 228 | ); 229 | COPY_PHASE_STRIP = NO; 230 | DSTROOT = /tmp/TiTestflight.dst; 231 | GCC_DYNAMIC_NO_PIC = NO; 232 | GCC_MODEL_TUNING = G5; 233 | GCC_OPTIMIZATION_LEVEL = 0; 234 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 235 | GCC_PREFIX_HEADER = TiTestflight_Prefix.pch; 236 | GCC_VERSION = com.apple.compilers.llvmgcc42; 237 | INSTALL_PATH = /usr/local/lib; 238 | LIBRARY_SEARCH_PATHS = ( 239 | "$(inherited)", 240 | "\"$(SRCROOT)\"", 241 | ); 242 | PRODUCT_NAME = TiTestflight; 243 | }; 244 | name = Debug; 245 | }; 246 | 1DEB922008733DC00010E9CD /* Release */ = { 247 | isa = XCBuildConfiguration; 248 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 249 | buildSettings = { 250 | ALWAYS_SEARCH_USER_PATHS = NO; 251 | ARCHS = ( 252 | armv6, 253 | "$(ARCHS_STANDARD_32_BIT)", 254 | ); 255 | DSTROOT = /tmp/TiTestflight.dst; 256 | GCC_MODEL_TUNING = G5; 257 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 258 | GCC_PREFIX_HEADER = TiTestflight_Prefix.pch; 259 | GCC_VERSION = com.apple.compilers.llvmgcc42; 260 | INSTALL_PATH = /usr/local/lib; 261 | LIBRARY_SEARCH_PATHS = ( 262 | "$(inherited)", 263 | "\"$(SRCROOT)\"", 264 | ); 265 | PRODUCT_NAME = TiTestflight; 266 | }; 267 | name = Release; 268 | }; 269 | 1DEB922308733DC00010E9CD /* Debug */ = { 270 | isa = XCBuildConfiguration; 271 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 272 | buildSettings = { 273 | ARCHS = ( 274 | armv6, 275 | "$(ARCHS_STANDARD_32_BIT)", 276 | ); 277 | GCC_C_LANGUAGE_STANDARD = c99; 278 | GCC_OPTIMIZATION_LEVEL = 0; 279 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 280 | GCC_WARN_UNUSED_VARIABLE = YES; 281 | OTHER_LDFLAGS = ""; 282 | SDKROOT = iphoneos; 283 | }; 284 | name = Debug; 285 | }; 286 | 1DEB922408733DC00010E9CD /* Release */ = { 287 | isa = XCBuildConfiguration; 288 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 289 | buildSettings = { 290 | ARCHS = ( 291 | armv6, 292 | "$(ARCHS_STANDARD_32_BIT)", 293 | ); 294 | GCC_C_LANGUAGE_STANDARD = c99; 295 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 296 | GCC_WARN_UNUSED_VARIABLE = YES; 297 | OTHER_LDFLAGS = ""; 298 | SDKROOT = iphoneos; 299 | }; 300 | name = Release; 301 | }; 302 | 24416B8211C4CA220047AFDD /* Debug */ = { 303 | isa = XCBuildConfiguration; 304 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 305 | buildSettings = { 306 | COPY_PHASE_STRIP = NO; 307 | GCC_DYNAMIC_NO_PIC = NO; 308 | GCC_OPTIMIZATION_LEVEL = 0; 309 | GCC_VERSION = com.apple.compilers.llvmgcc42; 310 | PRODUCT_NAME = "Build & test"; 311 | }; 312 | name = Debug; 313 | }; 314 | 24416B8311C4CA220047AFDD /* Release */ = { 315 | isa = XCBuildConfiguration; 316 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 317 | buildSettings = { 318 | COPY_PHASE_STRIP = YES; 319 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 320 | GCC_VERSION = com.apple.compilers.llvmgcc42; 321 | PRODUCT_NAME = "Build & test"; 322 | ZERO_LINK = NO; 323 | }; 324 | name = Release; 325 | }; 326 | /* End XCBuildConfiguration section */ 327 | 328 | /* Begin XCConfigurationList section */ 329 | 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "testflight" */ = { 330 | isa = XCConfigurationList; 331 | buildConfigurations = ( 332 | 1DEB921F08733DC00010E9CD /* Debug */, 333 | 1DEB922008733DC00010E9CD /* Release */, 334 | ); 335 | defaultConfigurationIsVisible = 0; 336 | defaultConfigurationName = Release; 337 | }; 338 | 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "testflight" */ = { 339 | isa = XCConfigurationList; 340 | buildConfigurations = ( 341 | 1DEB922308733DC00010E9CD /* Debug */, 342 | 1DEB922408733DC00010E9CD /* Release */, 343 | ); 344 | defaultConfigurationIsVisible = 0; 345 | defaultConfigurationName = Release; 346 | }; 347 | 24416B8A11C4CA520047AFDD /* Build configuration list for PBXAggregateTarget "Build & Test" */ = { 348 | isa = XCConfigurationList; 349 | buildConfigurations = ( 350 | 24416B8211C4CA220047AFDD /* Debug */, 351 | 24416B8311C4CA220047AFDD /* Release */, 352 | ); 353 | defaultConfigurationIsVisible = 0; 354 | defaultConfigurationName = Release; 355 | }; 356 | /* End XCConfigurationList section */ 357 | }; 358 | rootObject = 0867D690FE84028FC02AAC07 /* Project object */; 359 | } 360 | -------------------------------------------------------------------------------- /testflight.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /testflight.xcodeproj/project.xcworkspace/xcuserdata/fusion94.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/testflight.xcodeproj/project.xcworkspace/xcuserdata/fusion94.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /testflight.xcodeproj/project.xcworkspace/xcuserdata/mapperson.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $archiver 6 | NSKeyedArchiver 7 | $objects 8 | 9 | $null 10 | 11 | $class 12 | 13 | CF$UID 14 | 66 15 | 16 | NS.keys 17 | 18 | 19 | CF$UID 20 | 2 21 | 22 | 23 | CF$UID 24 | 3 25 | 26 | 27 | NS.objects 28 | 29 | 30 | CF$UID 31 | 4 32 | 33 | 34 | CF$UID 35 | 133 36 | 37 | 38 | 39 | IDEWorkspaceDocument 40 | 5B1DEE2F-F3C0-491F-94C4-D88172B62507 41 | 42 | $class 43 | 44 | CF$UID 45 | 36 46 | 47 | NS.keys 48 | 49 | 50 | CF$UID 51 | 5 52 | 53 | 54 | CF$UID 55 | 6 56 | 57 | 58 | CF$UID 59 | 7 60 | 61 | 62 | CF$UID 63 | 8 64 | 65 | 66 | CF$UID 67 | 9 68 | 69 | 70 | CF$UID 71 | 10 72 | 73 | 74 | CF$UID 75 | 11 76 | 77 | 78 | CF$UID 79 | 12 80 | 81 | 82 | CF$UID 83 | 13 84 | 85 | 86 | CF$UID 87 | 14 88 | 89 | 90 | NS.objects 91 | 92 | 93 | CF$UID 94 | 15 95 | 96 | 97 | CF$UID 98 | 16 99 | 100 | 101 | CF$UID 102 | 82 103 | 104 | 105 | CF$UID 106 | 83 107 | 108 | 109 | CF$UID 110 | 88 111 | 112 | 113 | CF$UID 114 | 91 115 | 116 | 117 | CF$UID 118 | 124 119 | 120 | 121 | CF$UID 122 | 125 123 | 124 | 125 | CF$UID 126 | 15 127 | 128 | 129 | CF$UID 130 | 15 131 | 132 | 133 | 134 | BreakpointsActivated 135 | DefaultEditorStatesForURLs 136 | DebuggingWindowBehavior 137 | ActiveRunDestination 138 | ActiveScheme 139 | LastCompletedPersistentSchemeBasedActivityReport 140 | DocumentWindows 141 | RecentEditorDocumentURLs 142 | AppFocusInMiniDebugging 143 | MiniDebuggingConsole 144 | 145 | 146 | $class 147 | 148 | CF$UID 149 | 36 150 | 151 | NS.keys 152 | 153 | 154 | CF$UID 155 | 17 156 | 157 | 158 | CF$UID 159 | 18 160 | 161 | 162 | NS.objects 163 | 164 | 165 | CF$UID 166 | 19 167 | 168 | 169 | CF$UID 170 | 49 171 | 172 | 173 | 174 | Xcode.IDEKit.EditorDocument.SourceCode 175 | Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project 176 | 177 | $class 178 | 179 | CF$UID 180 | 36 181 | 182 | NS.keys 183 | 184 | 185 | CF$UID 186 | 20 187 | 188 | 189 | CF$UID 190 | 24 191 | 192 | 193 | CF$UID 194 | 26 195 | 196 | 197 | NS.objects 198 | 199 | 200 | CF$UID 201 | 28 202 | 203 | 204 | CF$UID 205 | 37 206 | 207 | 208 | CF$UID 209 | 41 210 | 211 | 212 | 213 | 214 | $class 215 | 216 | CF$UID 217 | 23 218 | 219 | NS.base 220 | 221 | CF$UID 222 | 0 223 | 224 | NS.relative 225 | 226 | CF$UID 227 | 21 228 | 229 | 230 | 231 | $class 232 | 233 | CF$UID 234 | 22 235 | 236 | NS.string 237 | file://localhost/Users/mapperson/github/testflight/titanium.xcconfig 238 | 239 | 240 | $classes 241 | 242 | NSMutableString 243 | NSString 244 | NSObject 245 | 246 | $classname 247 | NSMutableString 248 | 249 | 250 | $classes 251 | 252 | NSURL 253 | NSObject 254 | 255 | $classname 256 | NSURL 257 | 258 | 259 | $class 260 | 261 | CF$UID 262 | 23 263 | 264 | NS.base 265 | 266 | CF$UID 267 | 0 268 | 269 | NS.relative 270 | 271 | CF$UID 272 | 25 273 | 274 | 275 | 276 | $class 277 | 278 | CF$UID 279 | 22 280 | 281 | NS.string 282 | file://localhost/Users/mapperson/github/testflight/Classes/TiTestflightModule.m 283 | 284 | 285 | $class 286 | 287 | CF$UID 288 | 23 289 | 290 | NS.base 291 | 292 | CF$UID 293 | 0 294 | 295 | NS.relative 296 | 297 | CF$UID 298 | 27 299 | 300 | 301 | 302 | $class 303 | 304 | CF$UID 305 | 22 306 | 307 | NS.string 308 | file://localhost/Users/mapperson/github/Modules_DR/Open%20Source/testflight/Classes/TiTestflightModule.m 309 | 310 | 311 | $class 312 | 313 | CF$UID 314 | 36 315 | 316 | NS.keys 317 | 318 | 319 | CF$UID 320 | 29 321 | 322 | 323 | CF$UID 324 | 30 325 | 326 | 327 | CF$UID 328 | 31 329 | 330 | 331 | CF$UID 332 | 32 333 | 334 | 335 | NS.objects 336 | 337 | 338 | CF$UID 339 | 33 340 | 341 | 342 | CF$UID 343 | 34 344 | 345 | 346 | CF$UID 347 | 15 348 | 349 | 350 | CF$UID 351 | 35 352 | 353 | 354 | 355 | PrimaryDocumentTimestamp 356 | PrimaryDocumentVisibleCharacterRange 357 | HideAllIssues 358 | PrimaryDocumentSelectedCharacterRange 359 | 337610111.51529002 360 | {0, 479} 361 | {222, 0} 362 | 363 | $classes 364 | 365 | NSMutableDictionary 366 | NSDictionary 367 | NSObject 368 | 369 | $classname 370 | NSMutableDictionary 371 | 372 | 373 | $class 374 | 375 | CF$UID 376 | 36 377 | 378 | NS.keys 379 | 380 | 381 | CF$UID 382 | 29 383 | 384 | 385 | CF$UID 386 | 30 387 | 388 | 389 | CF$UID 390 | 31 391 | 392 | 393 | CF$UID 394 | 32 395 | 396 | 397 | NS.objects 398 | 399 | 400 | CF$UID 401 | 38 402 | 403 | 404 | CF$UID 405 | 39 406 | 407 | 408 | CF$UID 409 | 15 410 | 411 | 412 | CF$UID 413 | 40 414 | 415 | 416 | 417 | 337610116.52784598 418 | {0, 1159} 419 | {168, 31} 420 | 421 | $class 422 | 423 | CF$UID 424 | 36 425 | 426 | NS.keys 427 | 428 | 429 | CF$UID 430 | 42 431 | 432 | 433 | CF$UID 434 | 43 435 | 436 | 437 | CF$UID 438 | 44 439 | 440 | 441 | CF$UID 442 | 45 443 | 444 | 445 | NS.objects 446 | 447 | 448 | CF$UID 449 | 46 450 | 451 | 452 | CF$UID 453 | 47 454 | 455 | 456 | CF$UID 457 | 15 458 | 459 | 460 | CF$UID 461 | 48 462 | 463 | 464 | 465 | PrimaryDocumentTimestamp 466 | PrimaryDocumentVisibleCharacterRange 467 | HideAllIssues 468 | PrimaryDocumentSelectedCharacterRange 469 | 337796659.79365599 470 | {0, 1181} 471 | {168, 31} 472 | 473 | $class 474 | 475 | CF$UID 476 | 36 477 | 478 | NS.keys 479 | 480 | 481 | CF$UID 482 | 50 483 | 484 | 485 | NS.objects 486 | 487 | 488 | CF$UID 489 | 52 490 | 491 | 492 | 493 | 494 | $class 495 | 496 | CF$UID 497 | 23 498 | 499 | NS.base 500 | 501 | CF$UID 502 | 0 503 | 504 | NS.relative 505 | 506 | CF$UID 507 | 51 508 | 509 | 510 | 511 | $class 512 | 513 | CF$UID 514 | 22 515 | 516 | NS.string 517 | file://localhost/Users/mapperson/github/Modules_DR/Open%20Source/testflight/testflight.xcodeproj/ 518 | 519 | 520 | $class 521 | 522 | CF$UID 523 | 36 524 | 525 | NS.keys 526 | 527 | 528 | CF$UID 529 | 53 530 | 531 | 532 | CF$UID 533 | 54 534 | 535 | 536 | CF$UID 537 | 55 538 | 539 | 540 | CF$UID 541 | 56 542 | 543 | 544 | NS.objects 545 | 546 | 547 | CF$UID 548 | 57 549 | 550 | 551 | CF$UID 552 | 58 553 | 554 | 555 | CF$UID 556 | 70 557 | 558 | 559 | CF$UID 560 | 81 561 | 562 | 563 | 564 | Xcode3ProjectEditorPreviousProjectEditorClass 565 | Xcode3ProjectEditor.sourceList.splitview 566 | Xcode3ProjectEditorSelectedDocumentLocations 567 | Xcode3ProjectEditor_Xcode3ProjectInfoEditor 568 | Xcode3ProjectInfoEditor 569 | 570 | $class 571 | 572 | CF$UID 573 | 36 574 | 575 | NS.keys 576 | 577 | 578 | CF$UID 579 | 59 580 | 581 | 582 | NS.objects 583 | 584 | 585 | CF$UID 586 | 60 587 | 588 | 589 | 590 | DVTSplitViewItems 591 | 592 | $class 593 | 594 | CF$UID 595 | 69 596 | 597 | NS.objects 598 | 599 | 600 | CF$UID 601 | 61 602 | 603 | 604 | CF$UID 605 | 67 606 | 607 | 608 | 609 | 610 | $class 611 | 612 | CF$UID 613 | 66 614 | 615 | NS.keys 616 | 617 | 618 | CF$UID 619 | 62 620 | 621 | 622 | CF$UID 623 | 63 624 | 625 | 626 | NS.objects 627 | 628 | 629 | CF$UID 630 | 64 631 | 632 | 633 | CF$UID 634 | 65 635 | 636 | 637 | 638 | DVTIdentifier 639 | DVTViewMagnitude 640 | 641 | 162 642 | 643 | $classes 644 | 645 | NSDictionary 646 | NSObject 647 | 648 | $classname 649 | NSDictionary 650 | 651 | 652 | $class 653 | 654 | CF$UID 655 | 66 656 | 657 | NS.keys 658 | 659 | 660 | CF$UID 661 | 62 662 | 663 | 664 | CF$UID 665 | 63 666 | 667 | 668 | NS.objects 669 | 670 | 671 | CF$UID 672 | 64 673 | 674 | 675 | CF$UID 676 | 68 677 | 678 | 679 | 680 | 978 681 | 682 | $classes 683 | 684 | NSMutableArray 685 | NSArray 686 | NSObject 687 | 688 | $classname 689 | NSMutableArray 690 | 691 | 692 | $class 693 | 694 | CF$UID 695 | 80 696 | 697 | NS.objects 698 | 699 | 700 | CF$UID 701 | 71 702 | 703 | 704 | 705 | 706 | $class 707 | 708 | CF$UID 709 | 79 710 | 711 | documentURL 712 | 713 | CF$UID 714 | 72 715 | 716 | selection 717 | 718 | CF$UID 719 | 74 720 | 721 | timestamp 722 | 723 | CF$UID 724 | 73 725 | 726 | 727 | file://localhost/Users/mapperson/github/Modules_DR/Open%20Source/testflight/testflight.xcodeproj/ 728 | 337796693.56200302 729 | 730 | $class 731 | 732 | CF$UID 733 | 36 734 | 735 | NS.keys 736 | 737 | 738 | CF$UID 739 | 75 740 | 741 | 742 | CF$UID 743 | 76 744 | 745 | 746 | NS.objects 747 | 748 | 749 | CF$UID 750 | 77 751 | 752 | 753 | CF$UID 754 | 78 755 | 756 | 757 | 758 | Project 759 | Editor 760 | testflight 761 | Xcode3ProjectInfoEditor 762 | 763 | $classes 764 | 765 | Xcode3ProjectDocumentLocation 766 | DVTDocumentLocation 767 | NSObject 768 | 769 | $classname 770 | Xcode3ProjectDocumentLocation 771 | 772 | 773 | $classes 774 | 775 | NSArray 776 | NSObject 777 | 778 | $classname 779 | NSArray 780 | 781 | 782 | $class 783 | 784 | CF$UID 785 | 36 786 | 787 | NS.keys 788 | 789 | NS.objects 790 | 791 | 792 | 0 793 | 794 | $class 795 | 796 | CF$UID 797 | 36 798 | 799 | NS.keys 800 | 801 | 802 | CF$UID 803 | 84 804 | 805 | 806 | CF$UID 807 | 85 808 | 809 | 810 | NS.objects 811 | 812 | 813 | CF$UID 814 | 86 815 | 816 | 817 | CF$UID 818 | 87 819 | 820 | 821 | 822 | IDEDeviceLocation 823 | IDEDeviceArchitecture 824 | dvtdevice-iphonePlaceholder:placeholder 825 | armv7 826 | 827 | $class 828 | 829 | CF$UID 830 | 36 831 | 832 | NS.keys 833 | 834 | 835 | CF$UID 836 | 89 837 | 838 | 839 | NS.objects 840 | 841 | 842 | CF$UID 843 | 90 844 | 845 | 846 | 847 | IDENameString 848 | testflight 849 | 850 | $class 851 | 852 | CF$UID 853 | 36 854 | 855 | NS.keys 856 | 857 | 858 | CF$UID 859 | 92 860 | 861 | 862 | CF$UID 863 | 93 864 | 865 | 866 | CF$UID 867 | 94 868 | 869 | 870 | NS.objects 871 | 872 | 873 | CF$UID 874 | 95 875 | 876 | 877 | CF$UID 878 | 122 879 | 880 | 881 | CF$UID 882 | 123 883 | 884 | 885 | 886 | IDEActivityReportCompletionSummaryStringSegments 887 | IDEActivityReportOptions 888 | IDEActivityReportTitle 889 | 890 | $class 891 | 892 | CF$UID 893 | 69 894 | 895 | NS.objects 896 | 897 | 898 | CF$UID 899 | 96 900 | 901 | 902 | CF$UID 903 | 103 904 | 905 | 906 | CF$UID 907 | 107 908 | 909 | 910 | CF$UID 911 | 112 912 | 913 | 914 | 915 | 916 | $class 917 | 918 | CF$UID 919 | 36 920 | 921 | NS.keys 922 | 923 | 924 | CF$UID 925 | 97 926 | 927 | 928 | CF$UID 929 | 98 930 | 931 | 932 | CF$UID 933 | 99 934 | 935 | 936 | NS.objects 937 | 938 | 939 | CF$UID 940 | 100 941 | 942 | 943 | CF$UID 944 | 101 945 | 946 | 947 | CF$UID 948 | 102 949 | 950 | 951 | 952 | IDEActivityReportStringSegmentPriority 953 | IDEActivityReportStringSegmentBackSeparator 954 | IDEActivityReportStringSegmentStringValue 955 | 2 956 | 957 | Build 958 | 959 | $class 960 | 961 | CF$UID 962 | 36 963 | 964 | NS.keys 965 | 966 | 967 | CF$UID 968 | 97 969 | 970 | 971 | CF$UID 972 | 98 973 | 974 | 975 | CF$UID 976 | 99 977 | 978 | 979 | NS.objects 980 | 981 | 982 | CF$UID 983 | 104 984 | 985 | 986 | CF$UID 987 | 105 988 | 989 | 990 | CF$UID 991 | 106 992 | 993 | 994 | 995 | 4 996 | : 997 | testflight 998 | 999 | $class 1000 | 1001 | CF$UID 1002 | 36 1003 | 1004 | NS.keys 1005 | 1006 | 1007 | CF$UID 1008 | 97 1009 | 1010 | 1011 | CF$UID 1012 | 98 1013 | 1014 | 1015 | CF$UID 1016 | 99 1017 | 1018 | 1019 | NS.objects 1020 | 1021 | 1022 | CF$UID 1023 | 108 1024 | 1025 | 1026 | CF$UID 1027 | 109 1028 | 1029 | 1030 | CF$UID 1031 | 110 1032 | 1033 | 1034 | 1035 | 1 1036 | 1037 | 1038 | $class 1039 | 1040 | CF$UID 1041 | 111 1042 | 1043 | NS.data 1044 | 1045 | YnBsaXN0MDDUAQIDBAUGOzxYJHZlcnNpb25YJG9iamVjdHNZJGFy 1046 | Y2hpdmVyVCR0b3ASAAGGoK0HCA8QGhscJCUrMTQ3VSRudWxs0wkK 1047 | CwwNDlxOU0F0dHJpYnV0ZXNWJGNsYXNzWE5TU3RyaW5ngAOADIAC 1048 | WVN1Y2NlZWRlZNMKERITFBdXTlMua2V5c1pOUy5vYmplY3RzgAui 1049 | FRaABIAFohgZgAaACVZOU0ZvbnRXTlNDb2xvctQKHR4fICEiI1ZO 1050 | U05hbWVWTlNTaXplWE5TZkZsYWdzgAiAByNAJgAAAAAAABENEF8Q 1051 | EUx1Y2lkYUdyYW5kZS1Cb2xk0iYnKClaJGNsYXNzbmFtZVgkY2xh 1052 | c3Nlc1ZOU0ZvbnSiKCpYTlNPYmplY3TTCiwtLi8wXE5TQ29sb3JT 1053 | cGFjZVdOU1doaXRlgAoQA0IwANImJzIzV05TQ29sb3KiMirSJic1 1054 | NlxOU0RpY3Rpb25hcnmiNSrSJic4OV8QEk5TQXR0cmlidXRlZFN0 1055 | cmluZ6I6Kl8QEk5TQXR0cmlidXRlZFN0cmluZ18QD05TS2V5ZWRB 1056 | cmNoaXZlctE9PlRyb290gAEACAARABoAIwAtADIANwBFAEsAUgBf 1057 | AGYAbwBxAHMAdQB/AIYAjgCZAJsAngCgAKIApQCnAKkAsAC4AMEA 1058 | yADPANgA2gDcAOUA6AD8AQEBDAEVARwBHwEoAS8BPAFEAUYBSAFL 1059 | AVABWAFbAWABbQFwAXUBigGNAaIBtAG3AbwAAAAAAAACAQAAAAAA 1060 | AAA/AAAAAAAAAAAAAAAAAAABvg== 1061 | 1062 | 1063 | 1064 | $classes 1065 | 1066 | NSMutableData 1067 | NSData 1068 | NSObject 1069 | 1070 | $classname 1071 | NSMutableData 1072 | 1073 | 1074 | $class 1075 | 1076 | CF$UID 1077 | 36 1078 | 1079 | NS.keys 1080 | 1081 | 1082 | CF$UID 1083 | 97 1084 | 1085 | 1086 | CF$UID 1087 | 113 1088 | 1089 | 1090 | CF$UID 1091 | 114 1092 | 1093 | 1094 | CF$UID 1095 | 99 1096 | 1097 | 1098 | CF$UID 1099 | 115 1100 | 1101 | 1102 | CF$UID 1103 | 116 1104 | 1105 | 1106 | NS.objects 1107 | 1108 | 1109 | CF$UID 1110 | 117 1111 | 1112 | 1113 | CF$UID 1114 | 118 1115 | 1116 | 1117 | CF$UID 1118 | 119 1119 | 1120 | 1121 | CF$UID 1122 | 121 1123 | 1124 | 1125 | CF$UID 1126 | 118 1127 | 1128 | 1129 | CF$UID 1130 | 118 1131 | 1132 | 1133 | 1134 | IDEActivityReportStringSegmentType 1135 | IDEActivityReportStringSegmentDate 1136 | IDEActivityReportStringSegmentDateStyle 1137 | IDEActivityReportStringSegmentTimeStyle 1138 | 3 1139 | 1 1140 | 1141 | $class 1142 | 1143 | CF$UID 1144 | 120 1145 | 1146 | NS.time 1147 | 337796690.39502698 1148 | 1149 | 1150 | $classes 1151 | 1152 | NSDate 1153 | NSObject 1154 | 1155 | $classname 1156 | NSDate 1157 | 1158 | Today at 12:24 PM 1159 | 234 1160 | testflight 1161 | 1162 | $class 1163 | 1164 | CF$UID 1165 | 69 1166 | 1167 | NS.objects 1168 | 1169 | 1170 | CF$UID 1171 | 3 1172 | 1173 | 1174 | 1175 | 1176 | $class 1177 | 1178 | CF$UID 1179 | 69 1180 | 1181 | NS.objects 1182 | 1183 | 1184 | CF$UID 1185 | 126 1186 | 1187 | 1188 | CF$UID 1189 | 127 1190 | 1191 | 1192 | CF$UID 1193 | 129 1194 | 1195 | 1196 | CF$UID 1197 | 131 1198 | 1199 | 1200 | 1201 | 1202 | $class 1203 | 1204 | CF$UID 1205 | 23 1206 | 1207 | NS.base 1208 | 1209 | CF$UID 1210 | 0 1211 | 1212 | NS.relative 1213 | 1214 | CF$UID 1215 | 72 1216 | 1217 | 1218 | 1219 | $class 1220 | 1221 | CF$UID 1222 | 23 1223 | 1224 | NS.base 1225 | 1226 | CF$UID 1227 | 0 1228 | 1229 | NS.relative 1230 | 1231 | CF$UID 1232 | 128 1233 | 1234 | 1235 | file://localhost/Users/mapperson/github/Modules_DR/Open%20Source/testflight/Classes/TiTestflightModule.m 1236 | 1237 | $class 1238 | 1239 | CF$UID 1240 | 23 1241 | 1242 | NS.base 1243 | 1244 | CF$UID 1245 | 0 1246 | 1247 | NS.relative 1248 | 1249 | CF$UID 1250 | 130 1251 | 1252 | 1253 | file://localhost/Users/mapperson/github/testflight/Classes/TiTestflightModule.m 1254 | 1255 | $class 1256 | 1257 | CF$UID 1258 | 23 1259 | 1260 | NS.base 1261 | 1262 | CF$UID 1263 | 0 1264 | 1265 | NS.relative 1266 | 1267 | CF$UID 1268 | 132 1269 | 1270 | 1271 | file://localhost/Users/mapperson/github/testflight/titanium.xcconfig 1272 | 1273 | $class 1274 | 1275 | CF$UID 1276 | 36 1277 | 1278 | NS.keys 1279 | 1280 | 1281 | CF$UID 1282 | 134 1283 | 1284 | 1285 | CF$UID 1286 | 135 1287 | 1288 | 1289 | CF$UID 1290 | 136 1291 | 1292 | 1293 | CF$UID 1294 | 137 1295 | 1296 | 1297 | CF$UID 1298 | 138 1299 | 1300 | 1301 | CF$UID 1302 | 139 1303 | 1304 | 1305 | CF$UID 1306 | 140 1307 | 1308 | 1309 | CF$UID 1310 | 141 1311 | 1312 | 1313 | NS.objects 1314 | 1315 | 1316 | CF$UID 1317 | 142 1318 | 1319 | 1320 | CF$UID 1321 | 143 1322 | 1323 | 1324 | CF$UID 1325 | 144 1326 | 1327 | 1328 | CF$UID 1329 | 15 1330 | 1331 | 1332 | CF$UID 1333 | 3 1334 | 1335 | 1336 | CF$UID 1337 | 136 1338 | 1339 | 1340 | CF$UID 1341 | 154 1342 | 1343 | 1344 | CF$UID 1345 | 15 1346 | 1347 | 1348 | 1349 | IDEWindowFrame 1350 | IDEOrderedWorkspaceTabControllers 1351 | IDEWorkspaceTabController_96A9FCD0-10FB-4BA9-A348-076BA9DA4C28 1352 | IDEWindowInFullscreenMode 1353 | IDEWorkspaceWindowControllerUniqueIdentifier 1354 | IDEActiveWorkspaceTabController 1355 | IDEWindowToolbarIsVisible 1356 | IDEWindowTabBarIsVisible 1357 | {{40, 57}, {1400, 821}} 1358 | 1359 | $class 1360 | 1361 | CF$UID 1362 | 80 1363 | 1364 | NS.objects 1365 | 1366 | 1367 | CF$UID 1368 | 136 1369 | 1370 | 1371 | 1372 | 1373 | $class 1374 | 1375 | CF$UID 1376 | 36 1377 | 1378 | NS.keys 1379 | 1380 | 1381 | CF$UID 1382 | 145 1383 | 1384 | 1385 | CF$UID 1386 | 146 1387 | 1388 | 1389 | CF$UID 1390 | 147 1391 | 1392 | 1393 | CF$UID 1394 | 148 1395 | 1396 | 1397 | CF$UID 1398 | 149 1399 | 1400 | 1401 | CF$UID 1402 | 150 1403 | 1404 | 1405 | CF$UID 1406 | 151 1407 | 1408 | 1409 | CF$UID 1410 | 152 1411 | 1412 | 1413 | NS.objects 1414 | 1415 | 1416 | CF$UID 1417 | 153 1418 | 1419 | 1420 | CF$UID 1421 | 154 1422 | 1423 | 1424 | CF$UID 1425 | 155 1426 | 1427 | 1428 | CF$UID 1429 | 258 1430 | 1431 | 1432 | CF$UID 1433 | 264 1434 | 1435 | 1436 | CF$UID 1437 | 302 1438 | 1439 | 1440 | CF$UID 1441 | 15 1442 | 1443 | 1444 | CF$UID 1445 | 82 1446 | 1447 | 1448 | 1449 | IDETabLabel 1450 | IDEShowNavigator 1451 | IDEEditorArea 1452 | IDEWorkspaceTabControllerUtilityAreaSplitView 1453 | IDENavigatorArea 1454 | IDEWorkspaceTabControllerDesignAreaSplitView 1455 | IDEShowUtilities 1456 | AssistantEditorsLayout 1457 | testflight.xcodeproj 1458 | 1459 | 1460 | $class 1461 | 1462 | CF$UID 1463 | 36 1464 | 1465 | NS.keys 1466 | 1467 | 1468 | CF$UID 1469 | 156 1470 | 1471 | 1472 | CF$UID 1473 | 157 1474 | 1475 | 1476 | CF$UID 1477 | 158 1478 | 1479 | 1480 | CF$UID 1481 | 159 1482 | 1483 | 1484 | CF$UID 1485 | 160 1486 | 1487 | 1488 | CF$UID 1489 | 161 1490 | 1491 | 1492 | CF$UID 1493 | 162 1494 | 1495 | 1496 | CF$UID 1497 | 163 1498 | 1499 | 1500 | NS.objects 1501 | 1502 | 1503 | CF$UID 1504 | 15 1505 | 1506 | 1507 | CF$UID 1508 | 164 1509 | 1510 | 1511 | CF$UID 1512 | 213 1513 | 1514 | 1515 | CF$UID 1516 | 154 1517 | 1518 | 1519 | CF$UID 1520 | 82 1521 | 1522 | 1523 | CF$UID 1524 | 238 1525 | 1526 | 1527 | CF$UID 1528 | 246 1529 | 1530 | 1531 | CF$UID 1532 | 247 1533 | 1534 | 1535 | 1536 | ShowDebuggerArea 1537 | IDEEditorMode_Standard 1538 | IDEEDitorArea_DebugArea 1539 | IDEShowEditor 1540 | EditorMode 1541 | DebuggerSplitView 1542 | DefaultPersistentRepresentations 1543 | layoutTree 1544 | 1545 | $class 1546 | 1547 | CF$UID 1548 | 36 1549 | 1550 | NS.keys 1551 | 1552 | 1553 | CF$UID 1554 | 165 1555 | 1556 | 1557 | NS.objects 1558 | 1559 | 1560 | CF$UID 1561 | 166 1562 | 1563 | 1564 | 1565 | EditorLayout_PersistentRepresentation 1566 | 1567 | $class 1568 | 1569 | CF$UID 1570 | 36 1571 | 1572 | NS.keys 1573 | 1574 | 1575 | CF$UID 1576 | 167 1577 | 1578 | 1579 | NS.objects 1580 | 1581 | 1582 | CF$UID 1583 | 168 1584 | 1585 | 1586 | 1587 | Main 1588 | 1589 | $class 1590 | 1591 | CF$UID 1592 | 66 1593 | 1594 | NS.keys 1595 | 1596 | 1597 | CF$UID 1598 | 169 1599 | 1600 | 1601 | CF$UID 1602 | 170 1603 | 1604 | 1605 | CF$UID 1606 | 171 1607 | 1608 | 1609 | NS.objects 1610 | 1611 | 1612 | CF$UID 1613 | 172 1614 | 1615 | 1616 | CF$UID 1617 | 82 1618 | 1619 | 1620 | CF$UID 1621 | 211 1622 | 1623 | 1624 | 1625 | EditorLayout_StateSavingStateDictionaries 1626 | EditorLayout_Selected 1627 | EditorLayout_Geometry 1628 | 1629 | $class 1630 | 1631 | CF$UID 1632 | 80 1633 | 1634 | NS.objects 1635 | 1636 | 1637 | CF$UID 1638 | 173 1639 | 1640 | 1641 | 1642 | 1643 | $class 1644 | 1645 | CF$UID 1646 | 36 1647 | 1648 | NS.keys 1649 | 1650 | 1651 | CF$UID 1652 | 174 1653 | 1654 | 1655 | CF$UID 1656 | 175 1657 | 1658 | 1659 | CF$UID 1660 | 176 1661 | 1662 | 1663 | CF$UID 1664 | 177 1665 | 1666 | 1667 | CF$UID 1668 | 178 1669 | 1670 | 1671 | CF$UID 1672 | 179 1673 | 1674 | 1675 | CF$UID 1676 | 180 1677 | 1678 | 1679 | NS.objects 1680 | 1681 | 1682 | CF$UID 1683 | 181 1684 | 1685 | 1686 | CF$UID 1687 | 182 1688 | 1689 | 1690 | CF$UID 1691 | 193 1692 | 1693 | 1694 | CF$UID 1695 | 208 1696 | 1697 | 1698 | CF$UID 1699 | 208 1700 | 1701 | 1702 | CF$UID 1703 | 18 1704 | 1705 | 1706 | CF$UID 1707 | 209 1708 | 1709 | 1710 | 1711 | FileDataType 1712 | ArchivableRepresentation 1713 | EditorState 1714 | NavigableItemName 1715 | DocumentNavigableItemName 1716 | DocumentExtensionIdentifier 1717 | DocumentURL 1718 | com.apple.xcode.project 1719 | 1720 | $class 1721 | 1722 | CF$UID 1723 | 192 1724 | 1725 | DocumentLocation 1726 | 1727 | CF$UID 1728 | 189 1729 | 1730 | DomainIdentifier 1731 | 1732 | CF$UID 1733 | 183 1734 | 1735 | IdentifierPath 1736 | 1737 | CF$UID 1738 | 184 1739 | 1740 | IndexOfDocumentIdentifier 1741 | 1742 | CF$UID 1743 | 188 1744 | 1745 | 1746 | Xcode.IDENavigableItemDomain.WorkspaceStructure 1747 | 1748 | $class 1749 | 1750 | CF$UID 1751 | 80 1752 | 1753 | NS.objects 1754 | 1755 | 1756 | CF$UID 1757 | 185 1758 | 1759 | 1760 | 1761 | 1762 | $class 1763 | 1764 | CF$UID 1765 | 187 1766 | 1767 | Identifier 1768 | 1769 | CF$UID 1770 | 186 1771 | 1772 | 1773 | testflight 1774 | 1775 | $classes 1776 | 1777 | IDEArchivableStringIndexPair 1778 | NSObject 1779 | 1780 | $classname 1781 | IDEArchivableStringIndexPair 1782 | 1783 | 9223372036854775807 1784 | 1785 | $class 1786 | 1787 | CF$UID 1788 | 191 1789 | 1790 | documentURL 1791 | 1792 | CF$UID 1793 | 190 1794 | 1795 | timestamp 1796 | 1797 | CF$UID 1798 | 0 1799 | 1800 | 1801 | 1802 | $class 1803 | 1804 | CF$UID 1805 | 22 1806 | 1807 | NS.string 1808 | file://localhost/Users/mapperson/github/Modules_DR/Open%20Source/testflight/testflight.xcodeproj/ 1809 | 1810 | 1811 | $classes 1812 | 1813 | DVTDocumentLocation 1814 | NSObject 1815 | 1816 | $classname 1817 | DVTDocumentLocation 1818 | 1819 | 1820 | $classes 1821 | 1822 | IDENavigableItemArchivableRepresentation 1823 | NSObject 1824 | 1825 | $classname 1826 | IDENavigableItemArchivableRepresentation 1827 | 1828 | 1829 | $class 1830 | 1831 | CF$UID 1832 | 66 1833 | 1834 | NS.keys 1835 | 1836 | 1837 | CF$UID 1838 | 53 1839 | 1840 | 1841 | CF$UID 1842 | 54 1843 | 1844 | 1845 | CF$UID 1846 | 55 1847 | 1848 | 1849 | CF$UID 1850 | 56 1851 | 1852 | 1853 | NS.objects 1854 | 1855 | 1856 | CF$UID 1857 | 194 1858 | 1859 | 1860 | CF$UID 1861 | 195 1862 | 1863 | 1864 | CF$UID 1865 | 201 1866 | 1867 | 1868 | CF$UID 1869 | 207 1870 | 1871 | 1872 | 1873 | Xcode3ProjectInfoEditor 1874 | 1875 | $class 1876 | 1877 | CF$UID 1878 | 36 1879 | 1880 | NS.keys 1881 | 1882 | 1883 | CF$UID 1884 | 59 1885 | 1886 | 1887 | NS.objects 1888 | 1889 | 1890 | CF$UID 1891 | 196 1892 | 1893 | 1894 | 1895 | 1896 | $class 1897 | 1898 | CF$UID 1899 | 69 1900 | 1901 | NS.objects 1902 | 1903 | 1904 | CF$UID 1905 | 197 1906 | 1907 | 1908 | CF$UID 1909 | 199 1910 | 1911 | 1912 | 1913 | 1914 | $class 1915 | 1916 | CF$UID 1917 | 66 1918 | 1919 | NS.keys 1920 | 1921 | 1922 | CF$UID 1923 | 62 1924 | 1925 | 1926 | CF$UID 1927 | 63 1928 | 1929 | 1930 | NS.objects 1931 | 1932 | 1933 | CF$UID 1934 | 64 1935 | 1936 | 1937 | CF$UID 1938 | 198 1939 | 1940 | 1941 | 1942 | 162 1943 | 1944 | $class 1945 | 1946 | CF$UID 1947 | 66 1948 | 1949 | NS.keys 1950 | 1951 | 1952 | CF$UID 1953 | 62 1954 | 1955 | 1956 | CF$UID 1957 | 63 1958 | 1959 | 1960 | NS.objects 1961 | 1962 | 1963 | CF$UID 1964 | 64 1965 | 1966 | 1967 | CF$UID 1968 | 200 1969 | 1970 | 1971 | 1972 | 978 1973 | 1974 | $class 1975 | 1976 | CF$UID 1977 | 80 1978 | 1979 | NS.objects 1980 | 1981 | 1982 | CF$UID 1983 | 202 1984 | 1985 | 1986 | 1987 | 1988 | $class 1989 | 1990 | CF$UID 1991 | 79 1992 | 1993 | documentURL 1994 | 1995 | CF$UID 1996 | 72 1997 | 1998 | selection 1999 | 2000 | CF$UID 2001 | 204 2002 | 2003 | timestamp 2004 | 2005 | CF$UID 2006 | 203 2007 | 2008 | 2009 | 337796693.56402999 2010 | 2011 | $class 2012 | 2013 | CF$UID 2014 | 36 2015 | 2016 | NS.keys 2017 | 2018 | 2019 | CF$UID 2020 | 75 2021 | 2022 | 2023 | CF$UID 2024 | 76 2025 | 2026 | 2027 | NS.objects 2028 | 2029 | 2030 | CF$UID 2031 | 205 2032 | 2033 | 2034 | CF$UID 2035 | 206 2036 | 2037 | 2038 | 2039 | testflight 2040 | Xcode3ProjectInfoEditor 2041 | 2042 | $class 2043 | 2044 | CF$UID 2045 | 36 2046 | 2047 | NS.keys 2048 | 2049 | NS.objects 2050 | 2051 | 2052 | testflight 2053 | 2054 | $class 2055 | 2056 | CF$UID 2057 | 23 2058 | 2059 | NS.base 2060 | 2061 | CF$UID 2062 | 0 2063 | 2064 | NS.relative 2065 | 2066 | CF$UID 2067 | 210 2068 | 2069 | 2070 | file://localhost/Users/mapperson/github/Modules_DR/Open%20Source/testflight/testflight.xcodeproj/ 2071 | 2072 | $class 2073 | 2074 | CF$UID 2075 | 80 2076 | 2077 | NS.objects 2078 | 2079 | 2080 | CF$UID 2081 | 212 2082 | 2083 | 2084 | 2085 | {{0, 0}, {1140, 745}} 2086 | 2087 | $class 2088 | 2089 | CF$UID 2090 | 36 2091 | 2092 | NS.keys 2093 | 2094 | 2095 | CF$UID 2096 | 214 2097 | 2098 | 2099 | CF$UID 2100 | 215 2101 | 2102 | 2103 | CF$UID 2104 | 216 2105 | 2106 | 2107 | CF$UID 2108 | 217 2109 | 2110 | 2111 | CF$UID 2112 | 218 2113 | 2114 | 2115 | CF$UID 2116 | 219 2117 | 2118 | 2119 | NS.objects 2120 | 2121 | 2122 | CF$UID 2123 | 118 2124 | 2125 | 2126 | CF$UID 2127 | 220 2128 | 2129 | 2130 | CF$UID 2131 | 222 2132 | 2133 | 2134 | CF$UID 2135 | 118 2136 | 2137 | 2138 | CF$UID 2139 | 230 2140 | 2141 | 2142 | CF$UID 2143 | 236 2144 | 2145 | 2146 | 2147 | LayoutFocusMode 2148 | console 2149 | IDEDebuggerAreaSplitView 2150 | LayoutMode 2151 | IDEDebugArea_SplitView 2152 | variables 2153 | 2154 | $class 2155 | 2156 | CF$UID 2157 | 36 2158 | 2159 | NS.keys 2160 | 2161 | 2162 | CF$UID 2163 | 221 2164 | 2165 | 2166 | NS.objects 2167 | 2168 | 2169 | CF$UID 2170 | 82 2171 | 2172 | 2173 | 2174 | ConsoleFilterMode 2175 | 2176 | $class 2177 | 2178 | CF$UID 2179 | 36 2180 | 2181 | NS.keys 2182 | 2183 | 2184 | CF$UID 2185 | 59 2186 | 2187 | 2188 | NS.objects 2189 | 2190 | 2191 | CF$UID 2192 | 223 2193 | 2194 | 2195 | 2196 | 2197 | $class 2198 | 2199 | CF$UID 2200 | 69 2201 | 2202 | NS.objects 2203 | 2204 | 2205 | CF$UID 2206 | 224 2207 | 2208 | 2209 | CF$UID 2210 | 227 2211 | 2212 | 2213 | 2214 | 2215 | $class 2216 | 2217 | CF$UID 2218 | 66 2219 | 2220 | NS.keys 2221 | 2222 | 2223 | CF$UID 2224 | 62 2225 | 2226 | 2227 | CF$UID 2228 | 63 2229 | 2230 | 2231 | NS.objects 2232 | 2233 | 2234 | CF$UID 2235 | 225 2236 | 2237 | 2238 | CF$UID 2239 | 226 2240 | 2241 | 2242 | 2243 | VariablesView 2244 | 570 2245 | 2246 | $class 2247 | 2248 | CF$UID 2249 | 66 2250 | 2251 | NS.keys 2252 | 2253 | 2254 | CF$UID 2255 | 62 2256 | 2257 | 2258 | CF$UID 2259 | 63 2260 | 2261 | 2262 | NS.objects 2263 | 2264 | 2265 | CF$UID 2266 | 228 2267 | 2268 | 2269 | CF$UID 2270 | 229 2271 | 2272 | 2273 | 2274 | ConsoleArea 2275 | 569 2276 | 2277 | $class 2278 | 2279 | CF$UID 2280 | 36 2281 | 2282 | NS.keys 2283 | 2284 | 2285 | CF$UID 2286 | 59 2287 | 2288 | 2289 | NS.objects 2290 | 2291 | 2292 | CF$UID 2293 | 231 2294 | 2295 | 2296 | 2297 | 2298 | $class 2299 | 2300 | CF$UID 2301 | 69 2302 | 2303 | NS.objects 2304 | 2305 | 2306 | CF$UID 2307 | 232 2308 | 2309 | 2310 | CF$UID 2311 | 234 2312 | 2313 | 2314 | 2315 | 2316 | $class 2317 | 2318 | CF$UID 2319 | 66 2320 | 2321 | NS.keys 2322 | 2323 | 2324 | CF$UID 2325 | 62 2326 | 2327 | 2328 | CF$UID 2329 | 63 2330 | 2331 | 2332 | NS.objects 2333 | 2334 | 2335 | CF$UID 2336 | 225 2337 | 2338 | 2339 | CF$UID 2340 | 233 2341 | 2342 | 2343 | 2344 | 570 2345 | 2346 | $class 2347 | 2348 | CF$UID 2349 | 66 2350 | 2351 | NS.keys 2352 | 2353 | 2354 | CF$UID 2355 | 62 2356 | 2357 | 2358 | CF$UID 2359 | 63 2360 | 2361 | 2362 | NS.objects 2363 | 2364 | 2365 | CF$UID 2366 | 228 2367 | 2368 | 2369 | CF$UID 2370 | 235 2371 | 2372 | 2373 | 2374 | 569 2375 | 2376 | $class 2377 | 2378 | CF$UID 2379 | 36 2380 | 2381 | NS.keys 2382 | 2383 | 2384 | CF$UID 2385 | 237 2386 | 2387 | 2388 | NS.objects 2389 | 2390 | 2391 | CF$UID 2392 | 118 2393 | 2394 | 2395 | 2396 | VariablesViewSelectedScope 2397 | 2398 | $class 2399 | 2400 | CF$UID 2401 | 36 2402 | 2403 | NS.keys 2404 | 2405 | 2406 | CF$UID 2407 | 59 2408 | 2409 | 2410 | NS.objects 2411 | 2412 | 2413 | CF$UID 2414 | 239 2415 | 2416 | 2417 | 2418 | 2419 | $class 2420 | 2421 | CF$UID 2422 | 69 2423 | 2424 | NS.objects 2425 | 2426 | 2427 | CF$UID 2428 | 240 2429 | 2430 | 2431 | CF$UID 2432 | 243 2433 | 2434 | 2435 | 2436 | 2437 | $class 2438 | 2439 | CF$UID 2440 | 66 2441 | 2442 | NS.keys 2443 | 2444 | 2445 | CF$UID 2446 | 62 2447 | 2448 | 2449 | CF$UID 2450 | 63 2451 | 2452 | 2453 | NS.objects 2454 | 2455 | 2456 | CF$UID 2457 | 241 2458 | 2459 | 2460 | CF$UID 2461 | 242 2462 | 2463 | 2464 | 2465 | IDEEditor 2466 | 203 2467 | 2468 | $class 2469 | 2470 | CF$UID 2471 | 66 2472 | 2473 | NS.keys 2474 | 2475 | 2476 | CF$UID 2477 | 62 2478 | 2479 | 2480 | CF$UID 2481 | 63 2482 | 2483 | 2484 | NS.objects 2485 | 2486 | 2487 | CF$UID 2488 | 244 2489 | 2490 | 2491 | CF$UID 2492 | 245 2493 | 2494 | 2495 | 2496 | IDEDebuggerArea 2497 | 115 2498 | 2499 | $class 2500 | 2501 | CF$UID 2502 | 36 2503 | 2504 | NS.keys 2505 | 2506 | NS.objects 2507 | 2508 | 2509 | 2510 | $class 2511 | 2512 | CF$UID 2513 | 257 2514 | 2515 | geniusEditorContextNode 2516 | 2517 | CF$UID 2518 | 0 2519 | 2520 | primaryEditorContextNode 2521 | 2522 | CF$UID 2523 | 248 2524 | 2525 | rootLayoutTreeNode 2526 | 2527 | CF$UID 2528 | 254 2529 | 2530 | 2531 | 2532 | $class 2533 | 2534 | CF$UID 2535 | 256 2536 | 2537 | children 2538 | 2539 | CF$UID 2540 | 0 2541 | 2542 | contentType 2543 | 1 2544 | documentArchivableRepresentation 2545 | 2546 | CF$UID 2547 | 249 2548 | 2549 | orientation 2550 | 0 2551 | parent 2552 | 2553 | CF$UID 2554 | 254 2555 | 2556 | 2557 | 2558 | $class 2559 | 2560 | CF$UID 2561 | 192 2562 | 2563 | DocumentLocation 2564 | 2565 | CF$UID 2566 | 189 2567 | 2568 | DomainIdentifier 2569 | 2570 | CF$UID 2571 | 183 2572 | 2573 | IdentifierPath 2574 | 2575 | CF$UID 2576 | 250 2577 | 2578 | IndexOfDocumentIdentifier 2579 | 2580 | CF$UID 2581 | 253 2582 | 2583 | 2584 | 2585 | $class 2586 | 2587 | CF$UID 2588 | 80 2589 | 2590 | NS.objects 2591 | 2592 | 2593 | CF$UID 2594 | 251 2595 | 2596 | 2597 | 2598 | 2599 | $class 2600 | 2601 | CF$UID 2602 | 187 2603 | 2604 | Identifier 2605 | 2606 | CF$UID 2607 | 252 2608 | 2609 | 2610 | testflight 2611 | 9223372036854775807 2612 | 2613 | $class 2614 | 2615 | CF$UID 2616 | 256 2617 | 2618 | children 2619 | 2620 | CF$UID 2621 | 255 2622 | 2623 | contentType 2624 | 0 2625 | documentArchivableRepresentation 2626 | 2627 | CF$UID 2628 | 0 2629 | 2630 | orientation 2631 | 0 2632 | parent 2633 | 2634 | CF$UID 2635 | 0 2636 | 2637 | 2638 | 2639 | $class 2640 | 2641 | CF$UID 2642 | 80 2643 | 2644 | NS.objects 2645 | 2646 | 2647 | CF$UID 2648 | 248 2649 | 2650 | 2651 | 2652 | 2653 | $classes 2654 | 2655 | IDEWorkspaceTabControllerLayoutTreeNode 2656 | NSObject 2657 | 2658 | $classname 2659 | IDEWorkspaceTabControllerLayoutTreeNode 2660 | 2661 | 2662 | $classes 2663 | 2664 | IDEWorkspaceTabControllerLayoutTree 2665 | NSObject 2666 | 2667 | $classname 2668 | IDEWorkspaceTabControllerLayoutTree 2669 | 2670 | 2671 | $class 2672 | 2673 | CF$UID 2674 | 36 2675 | 2676 | NS.keys 2677 | 2678 | 2679 | CF$UID 2680 | 59 2681 | 2682 | 2683 | NS.objects 2684 | 2685 | 2686 | CF$UID 2687 | 259 2688 | 2689 | 2690 | 2691 | 2692 | $class 2693 | 2694 | CF$UID 2695 | 69 2696 | 2697 | NS.objects 2698 | 2699 | 2700 | CF$UID 2701 | 260 2702 | 2703 | 2704 | CF$UID 2705 | 262 2706 | 2707 | 2708 | 2709 | 2710 | $class 2711 | 2712 | CF$UID 2713 | 66 2714 | 2715 | NS.keys 2716 | 2717 | 2718 | CF$UID 2719 | 62 2720 | 2721 | 2722 | CF$UID 2723 | 63 2724 | 2725 | 2726 | NS.objects 2727 | 2728 | 2729 | CF$UID 2730 | 64 2731 | 2732 | 2733 | CF$UID 2734 | 261 2735 | 2736 | 2737 | 2738 | 521 2739 | 2740 | $class 2741 | 2742 | CF$UID 2743 | 66 2744 | 2745 | NS.keys 2746 | 2747 | 2748 | CF$UID 2749 | 62 2750 | 2751 | 2752 | CF$UID 2753 | 63 2754 | 2755 | 2756 | NS.objects 2757 | 2758 | 2759 | CF$UID 2760 | 64 2761 | 2762 | 2763 | CF$UID 2764 | 263 2765 | 2766 | 2767 | 2768 | 224 2769 | 2770 | $class 2771 | 2772 | CF$UID 2773 | 36 2774 | 2775 | NS.keys 2776 | 2777 | 2778 | CF$UID 2779 | 265 2780 | 2781 | 2782 | CF$UID 2783 | 266 2784 | 2785 | 2786 | CF$UID 2787 | 267 2788 | 2789 | 2790 | NS.objects 2791 | 2792 | 2793 | CF$UID 2794 | 268 2795 | 2796 | 2797 | CF$UID 2798 | 267 2799 | 2800 | 2801 | CF$UID 2802 | 285 2803 | 2804 | 2805 | 2806 | Xcode.IDEKit.Navigator.Issues 2807 | SelectedNavigator 2808 | Xcode.IDEKit.Navigator.Structure 2809 | 2810 | $class 2811 | 2812 | CF$UID 2813 | 36 2814 | 2815 | NS.keys 2816 | 2817 | 2818 | CF$UID 2819 | 269 2820 | 2821 | 2822 | CF$UID 2823 | 270 2824 | 2825 | 2826 | CF$UID 2827 | 271 2828 | 2829 | 2830 | CF$UID 2831 | 272 2832 | 2833 | 2834 | CF$UID 2835 | 273 2836 | 2837 | 2838 | CF$UID 2839 | 274 2840 | 2841 | 2842 | CF$UID 2843 | 275 2844 | 2845 | 2846 | CF$UID 2847 | 276 2848 | 2849 | 2850 | CF$UID 2851 | 277 2852 | 2853 | 2854 | NS.objects 2855 | 2856 | 2857 | CF$UID 2858 | 15 2859 | 2860 | 2861 | CF$UID 2862 | 278 2863 | 2864 | 2865 | CF$UID 2866 | 279 2867 | 2868 | 2869 | CF$UID 2870 | 281 2871 | 2872 | 2873 | CF$UID 2874 | 282 2875 | 2876 | 2877 | CF$UID 2878 | 15 2879 | 2880 | 2881 | CF$UID 2882 | 283 2883 | 2884 | 2885 | CF$UID 2886 | 15 2887 | 2888 | 2889 | CF$UID 2890 | 284 2891 | 2892 | 2893 | 2894 | IDEErrorFilteringEnabled 2895 | IDEVisibleRect 2896 | IDECollapsedFiles 2897 | IDEExpandedIssues 2898 | IDESelectedNavigables 2899 | IDEShowsByType 2900 | IDECollapsedTypes 2901 | IDERecentFilteringEnabled 2902 | IDECollapsedGroups 2903 | {{0, 0}, {259, 679}} 2904 | 2905 | $class 2906 | 2907 | CF$UID 2908 | 280 2909 | 2910 | NS.objects 2911 | 2912 | 2913 | 2914 | $classes 2915 | 2916 | NSMutableSet 2917 | NSSet 2918 | NSObject 2919 | 2920 | $classname 2921 | NSMutableSet 2922 | 2923 | 2924 | $class 2925 | 2926 | CF$UID 2927 | 280 2928 | 2929 | NS.objects 2930 | 2931 | 2932 | 2933 | $class 2934 | 2935 | CF$UID 2936 | 69 2937 | 2938 | NS.objects 2939 | 2940 | 2941 | 2942 | $class 2943 | 2944 | CF$UID 2945 | 280 2946 | 2947 | NS.objects 2948 | 2949 | 2950 | 2951 | $class 2952 | 2953 | CF$UID 2954 | 280 2955 | 2956 | NS.objects 2957 | 2958 | 2959 | 2960 | $class 2961 | 2962 | CF$UID 2963 | 36 2964 | 2965 | NS.keys 2966 | 2967 | 2968 | CF$UID 2969 | 286 2970 | 2971 | 2972 | CF$UID 2973 | 287 2974 | 2975 | 2976 | CF$UID 2977 | 288 2978 | 2979 | 2980 | CF$UID 2981 | 289 2982 | 2983 | 2984 | CF$UID 2985 | 290 2986 | 2987 | 2988 | CF$UID 2989 | 291 2990 | 2991 | 2992 | CF$UID 2993 | 292 2994 | 2995 | 2996 | NS.objects 2997 | 2998 | 2999 | CF$UID 3000 | 293 3001 | 3002 | 3003 | CF$UID 3004 | 15 3005 | 3006 | 3007 | CF$UID 3008 | 294 3009 | 3010 | 3011 | CF$UID 3012 | 15 3013 | 3014 | 3015 | CF$UID 3016 | 15 3017 | 3018 | 3019 | CF$UID 3020 | 296 3021 | 3022 | 3023 | CF$UID 3024 | 297 3025 | 3026 | 3027 | 3028 | IDEVisibleRect 3029 | IDEUnsavedDocumentFilteringEnabled 3030 | IDENavigatorExpandedItemsBeforeFilteringSet 3031 | IDERecentDocumentFilteringEnabled 3032 | IDESCMStatusFilteringEnabled 3033 | IDESelectedObjects 3034 | IDEExpandedItemsSet 3035 | {{0, 0}, {259, 701}} 3036 | 3037 | $class 3038 | 3039 | CF$UID 3040 | 295 3041 | 3042 | NS.objects 3043 | 3044 | 3045 | 3046 | $classes 3047 | 3048 | NSSet 3049 | NSObject 3050 | 3051 | $classname 3052 | NSSet 3053 | 3054 | 3055 | $class 3056 | 3057 | CF$UID 3058 | 80 3059 | 3060 | NS.objects 3061 | 3062 | 3063 | 3064 | $class 3065 | 3066 | CF$UID 3067 | 295 3068 | 3069 | NS.objects 3070 | 3071 | 3072 | CF$UID 3073 | 298 3074 | 3075 | 3076 | CF$UID 3077 | 300 3078 | 3079 | 3080 | 3081 | 3082 | $class 3083 | 3084 | CF$UID 3085 | 69 3086 | 3087 | NS.objects 3088 | 3089 | 3090 | CF$UID 3091 | 299 3092 | 3093 | 3094 | 3095 | testflight 3096 | 3097 | $class 3098 | 3099 | CF$UID 3100 | 69 3101 | 3102 | NS.objects 3103 | 3104 | 3105 | CF$UID 3106 | 299 3107 | 3108 | 3109 | CF$UID 3110 | 301 3111 | 3112 | 3113 | 3114 | Frameworks 3115 | 3116 | $class 3117 | 3118 | CF$UID 3119 | 36 3120 | 3121 | NS.keys 3122 | 3123 | 3124 | CF$UID 3125 | 59 3126 | 3127 | 3128 | NS.objects 3129 | 3130 | 3131 | CF$UID 3132 | 303 3133 | 3134 | 3135 | 3136 | 3137 | $class 3138 | 3139 | CF$UID 3140 | 69 3141 | 3142 | NS.objects 3143 | 3144 | 3145 | CF$UID 3146 | 304 3147 | 3148 | 3149 | CF$UID 3150 | 306 3151 | 3152 | 3153 | CF$UID 3154 | 308 3155 | 3156 | 3157 | 3158 | 3159 | $class 3160 | 3161 | CF$UID 3162 | 66 3163 | 3164 | NS.keys 3165 | 3166 | 3167 | CF$UID 3168 | 62 3169 | 3170 | 3171 | CF$UID 3172 | 63 3173 | 3174 | 3175 | NS.objects 3176 | 3177 | 3178 | CF$UID 3179 | 149 3180 | 3181 | 3182 | CF$UID 3183 | 305 3184 | 3185 | 3186 | 3187 | 260 3188 | 3189 | $class 3190 | 3191 | CF$UID 3192 | 66 3193 | 3194 | NS.keys 3195 | 3196 | 3197 | CF$UID 3198 | 62 3199 | 3200 | 3201 | CF$UID 3202 | 63 3203 | 3204 | 3205 | NS.objects 3206 | 3207 | 3208 | CF$UID 3209 | 147 3210 | 3211 | 3212 | CF$UID 3213 | 307 3214 | 3215 | 3216 | 3217 | 1140 3218 | 3219 | $class 3220 | 3221 | CF$UID 3222 | 66 3223 | 3224 | NS.keys 3225 | 3226 | 3227 | CF$UID 3228 | 62 3229 | 3230 | 3231 | CF$UID 3232 | 63 3233 | 3234 | 3235 | NS.objects 3236 | 3237 | 3238 | CF$UID 3239 | 309 3240 | 3241 | 3242 | CF$UID 3243 | 310 3244 | 3245 | 3246 | 3247 | IDEUtilitiesArea 3248 | 260 3249 | 3250 | $top 3251 | 3252 | State 3253 | 3254 | CF$UID 3255 | 1 3256 | 3257 | 3258 | $version 3259 | 100000 3260 | 3261 | 3262 | -------------------------------------------------------------------------------- /testflight.xcodeproj/project.xcworkspace/xcuserdata/mapperson.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges 6 | 7 | IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /testflight.xcodeproj/xcuserdata/fusion94.xcuserdatad/xcschemes/Build & Test.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 40 | 41 | 42 | 43 | 49 | 50 | 52 | 53 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /testflight.xcodeproj/xcuserdata/fusion94.xcuserdatad/xcschemes/testflight.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 40 | 41 | 42 | 43 | 49 | 50 | 52 | 53 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /testflight.xcodeproj/xcuserdata/fusion94.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Build & Test.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | testflight.xcscheme 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 24416B8111C4CA220047AFDD 21 | 22 | primary 23 | 24 | 25 | D2AAC07D0554694100DB518D 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /testflight.xcodeproj/xcuserdata/mapperson.xcuserdatad/xcschemes/Build & Test.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 38 | 39 | 40 | 41 | 46 | 47 | 49 | 50 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /testflight.xcodeproj/xcuserdata/mapperson.xcuserdatad/xcschemes/testflight.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 38 | 39 | 40 | 41 | 46 | 47 | 49 | 50 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /testflight.xcodeproj/xcuserdata/mapperson.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Build & Test.xcscheme 8 | 9 | orderHint 10 | 1 11 | 12 | testflight.xcscheme 13 | 14 | orderHint 15 | 0 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 24416B8111C4CA220047AFDD 21 | 22 | primary 23 | 24 | 25 | D2AAC07D0554694100DB518D 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /ti.testflight-iphone-1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/ti.testflight-iphone-1.1.zip -------------------------------------------------------------------------------- /ti.testflight-iphone-1.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusion94/testflight-module/c3696a3e407cbd469edf4bb8166b4b15df06dbec/ti.testflight-iphone-1.2.zip -------------------------------------------------------------------------------- /timodule.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /titanium.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // CHANGE THESE VALUES TO REFLECT THE VERSION (AND LOCATION IF DIFFERENT) 4 | // OF YOUR TITANIUM SDK YOU'RE BUILDING FOR 5 | // 6 | // 7 | TITANIUM_SDK_VERSION = 1.8.0.1 8 | 9 | 10 | // 11 | // THESE SHOULD BE OK GENERALLY AS-IS 12 | // 13 | TITANIUM_SDK = ~/Library/Application Support/Titanium/mobilesdk/osx/$(TITANIUM_SDK_VERSION) 14 | TITANIUM_BASE_SDK = "$(TITANIUM_SDK)/iphone/include" 15 | TITANIUM_BASE_SDK2 = "$(TITANIUM_SDK)/iphone/include/TiCore" 16 | HEADER_SEARCH_PATHS= $(TITANIUM_BASE_SDK) $(TITANIUM_BASE_SDK2) 17 | 18 | 19 | 20 | --------------------------------------------------------------------------------