Merge lp:~rockstar/ubuntuone-ios-music/upgrade-testflight into lp:ubuntuone-ios-music

Proposed by Paul Hummer
Status: Merged
Approved by: Paul Hummer
Approved revision: 229
Merged at revision: 229
Proposed branch: lp:~rockstar/ubuntuone-ios-music/upgrade-testflight
Merge into: lp:ubuntuone-ios-music
Diff against target: 523 lines (+328/-62)
3 files modified
TestFlight SDK/README.txt (+141/-53)
TestFlight SDK/TestFlight.h (+69/-8)
TestFlight SDK/release_notes.txt (+118/-1)
To merge this branch: bzr merge lp:~rockstar/ubuntuone-ios-music/upgrade-testflight
Reviewer Review Type Date Requested Status
Zachery Bir Approve
Review via email: mp+121939@code.launchpad.net

Commit message

Upgrade TestFlight

Description of the change

Upgrade the TestFlight lib to 1.0 - Seems there was some weirdness in how it sends crash reports in earlier versions (including the version we were using from back in August 2011).

To post a comment you must log in.
Revision history for this message
Zachery Bir (urbanape) wrote :

Do it.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'TestFlight SDK/README.txt'
--- TestFlight SDK/README.txt 2011-10-18 19:18:05 +0000
+++ TestFlight SDK/README.txt 2012-08-29 20:24:18 +0000
@@ -1,16 +1,19 @@
1Thanks for downloading the TestFlight SDK! 1Thanks for downloading the TestFlight SDK 1.0!
22
3This document is also availale on the web at https://www.testflightapp.com/sdk/doc3This document is also available on the web at https://www.testflightapp.com/sdk/doc
44
51. Why use the TestFlight SDK?51. Why use the TestFlight SDK?
62. Considerations62. Considerations
73. How do I integrate the SDK into my project?73. How do I integrate the SDK into my project?
84. Using the Checkpoint API84. Beta Testing and Release Differentiation
95. Using the Feedback API95. Using the Checkpoint API
106. Upload your build106. Using the Feedback API
117. Questions API117. Upload your build
128. View your results128. Questions API
139. Advanced Exception Handling139. View your results
1410. Advanced Exception Handling
1511. Remote Logging
1612. iOS 3
1417
15START18START
1619
@@ -21,27 +24,30 @@
2124
22To get the most out of the SDK we have provided the Checkpoint API.25To get the most out of the SDK we have provided the Checkpoint API.
2326
24The Checkpoint API is used to help you track exactly how your testers are using your application. Curious about which users passed level 5 in your game, or posted their high score to Twitter, or found that obscure feature? With a single line of code you can find gather all this information. Wondering how many times your app has crashed? Wondering who your power testers are? We've got you covered. See more information on the Checkpoint API in section 4.27The Checkpoint API is used to help you track exactly how your testers are using your application. Curious about which users passed level 5 in your game, or posted their high score to Twitter, or found that obscure feature? With a single line of code you can finally gather all this information. Wondering how many times your app has crashed? Wondering who your power testers are? We've got you covered. See more information on the Checkpoint API in section 4.
2528
26Alongside the Checkpoint API is the Questions interface. The Questions interface is managed on a per build basis on the TestFlight website. Find out more about the Questions Interface in section 6.29Alongside the Checkpoint API is the Questions interface. The Questions interface is managed on a per build basis on the TestFlight website. Find out more about the Questions Interface in section 6.
2730
31For more detailed debugging we have a remote logging solution. Find out more about our logging system with TFLog in the Remote Logging section.
32
282. Considerations332. Considerations
2934
3035
31Information gathered by the SDK is sent to the website in real time. When an application is put into the background (iOS 4.x) or terminated (iOS 3.x) we try to send the finalizing information for the session during the time allowed for finalizing the application. Should all of the data not get sent the remaining data will be sent the next time the application is launched. As such, to get the most out of the SDK we recommend your application support iOS 4.0 and higher.36Information gathered by the SDK is sent to the website in real time. When an application is put into the background (iOS 4.x) or terminated (iOS 3.x) we try to send the finalizing information for the session during the time allowed for finalizing the application. Should all of the data not get sent the remaining data will be sent the next time the application is launched. As such, to get the most out of the SDK we recommend your application support iOS 4.0 and higher.
3237
33This SDK can be run from both the iPhone Simulator and Device and has been tested using XCode 4.0.38This SDK can be run from both the iPhone Simulator and Device and has been tested using Xcode 4.0.
3439
353. How do I integrate the SDK into my project?403. How do I integrate the SDK into my project?
3641
3742
381. Add the files to your project: Project -> Add to Project -> TestFlightSDK431. Add the files to your project: File -> Add Files to "<your project name>"
3944
40 1. Copy items into destination folder (if needed): Checked45 1. Find and select the folder that contains the SDK
41 2. Reference Type: Default46 2. Make sure that "Copy items into destination folder (if needed)" is checked
42 3. Recursively create groups for added folders47 3. Set Folders to "Create groups for any added folders"
4348 4. Select all targets that you want to add the SDK to
442. Verify that libTestFlight.a has been added to the Link Binary With Libraries Build Phase for the targets you want to use the SDK with49
502. Verify that libTestFlight.a and has been added to the Link Binary With Libraries Build Phase for the targets you want to use the SDK with
45 51
46 1. Select your Project in the Project Navigator52 1. Select your Project in the Project Navigator
47 2. Select the target you want to enable the SDK for53 2. Select the target you want to enable the SDK for
@@ -50,72 +56,111 @@
50 5. If libTestFlight.a is not listed, drag and drop the library from your Project Navigator to the Link Binary With Libraries area56 5. If libTestFlight.a is not listed, drag and drop the library from your Project Navigator to the Link Binary With Libraries area
51 6. Repeat Steps 2 - 5 until all targets you want to use the SDK with have the SDK linked57 6. Repeat Steps 2 - 5 until all targets you want to use the SDK with have the SDK linked
5258
533. In your Application Delegate:593. Add libz to your Link Binary With Libraries Build Phase
5460
55 1. Import TestFlight -> #import "TestFlight.h"61 1. Select your Project in the Project Navigator
56 NOTE: If you do not want to import TestFlight.h in every file you may add the above line into you precompiled header (<projectname>_Prefix.pch) file inside of the 62 2. Select the target you want to enable the SDK for
5763 3. Select the Build Phases tab
58 #ifdef __OBJC__ section. 64 4. Open the Link Binary With Libraries Phase
65 5. Click the + to add a new library
66 6. Find libz.dylib in the list and add it
67 7. Repeat Steps 2 - 6 until all targets you want to use the SDK with have libz.dylib
68
694. In your Application Delegate:
70
71 1. Import TestFlight: `#import "TestFlight.h"`
72 NOTE: If you do not want to import TestFlight.h in every file you may add the above line into you pre-compiled header (`<projectname>_Prefix.pch`) file inside of the
73
74 #ifdef __OBJC__
75 section.
59 This will give you access to the SDK across all files.76 This will give you access to the SDK across all files.
60 2. Get your Team Token which you can find at [http://testflightapp.com/dashboard/team/](http://testflightapp.com/dashboard/team/) select the team you are using then choose edit.77
61 3. Launch TestFlight with your Team Token, if you do not currently use an unhandled exception handler you can skip to step 478 2. Get your Team Token which you can find at [http://testflightapp.com/dashboard/team/](http://testflightapp.com/dashboard/team/) select the team you are using from the team selection drop down list on the top of the page and then select Team Info.
79
80
81 3. Launch TestFlight with your Team Token
6282
63 -(BOOL)application:(UIApplication *)application 83 -(BOOL)application:(UIApplication *)application
64 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {84 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
85 // start of your application:didFinishLaunchingWithOptions
86 // ...
65 [TestFlight takeOff:@"Insert your Team Token here"];87 [TestFlight takeOff:@"Insert your Team Token here"];
88 // The rest of your application:didFinishLaunchingWithOptions method
89 // ...
66 }90 }
6791
68 4. To report crashes to you we install our own unhandled exception handler. If you are not currently using an exception handler of your own then all you need ot do is go to the next step. If you currently use an Exception Handler, or you use another framework that does please go to the section on advanced exception handling.92 4. To report crashes to you we install our own uncaught exception handler. If you are not currently using an exception handler of your own then all you need to do is go to the next step. If you currently use an Exception Handler, or you use another framework that does please go to the section on advanced exception handling.
6993
704. To enable the best crash reporting possible we recommend setting the following project build settings in XCode to NO for all targets that you want to have live crash reporting for You can find build settings by opening the Project Navigator (default command+1 or command+shift_j) then clicking on the project you are configuring (usually the first selection in the list) from there you can choose to either change the global project settings or settings on an individual project basis. All settings below are in the Deployment Section.945. To enable the best crash reporting possible we recommend setting the following project build settings in Xcode to NO for all targets that you want to have live crash reporting for. You can find build settings by opening the Project Navigator (default command+1 or command+shift+j) then clicking on the project you are configuring (usually the first selection in the list). From there you can choose to either change the global project settings or settings on an individual project basis. All settings below are in the Deployment Section.
7195
72 1. Deployment Postprocessing96 1. Deployment Postrocessing
73 2. Strip Debug Symbols During Copy97 2. Strip Debug Symbols During Copy
74 3. Strip Linked Product98 3. Strip Linked Product
7599
764. Use the Checkpoint API to create important checkpoints throughout your application.100
771014. Beta Testing and Release Differentiation
78When a tester passes a level, or adds a new todo item, you can pass a checkpoint. The checkpoint progress is used to provide insight into how your testers are testing your apps. The passed checkpoints are also attached to crashes which can help when creating steps to replicate.102
79103In order to provide more information about your testers while beta testing you will need to provide the device's unique identifier. This identifier is not something that the SDK will collect from the device and we do not recommend using this in production. Here is the recommended code for providing the device unique identifier.
80[TestFlight passCheckpoint:@"CHECKPOINT_NAME"];104
81Use passCheckpoint: to track when a user performs certain tasks in your application. This can be useful for making sure testers are hitting all parts of your application, as well as tracking which testers are being thorough.105 #define TESTING 1
82106 #ifdef TESTING
835. Using the Feedback API107 [TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];
84108 #endif
85To launch unguided feedback call the openFeedbackView method. We recommend that you call this from a GUI element. 109
110This will allow you to have the best possible information during testing, but disable getting and sending of the device unique identifier when you release your application. When it is time to release simply comment out #define TESTING 1. If you decide to not include the device's unique identifier during your testing phase TestFlight will still collect all of the information that you send but it may be anonymized.
111
1125. Use the Checkpoint API to create important checkpoints throughout your application.
113
114When a tester does something you care about in your app you can pass a checkpoint. For example completing a level, adding a todo item, etc. The checkpoint progress is used to provide insight into how your testers are testing your apps. The passed checkpoints are also attached to crashes, which can help when creating steps to replicate.
115
116`[TestFlight passCheckpoint:@"CHECKPOINT_NAME"];`
117Use `+passCheckpoint:` to track when a user performs certain tasks in your application. This can be useful for making sure testers are hitting all parts of your application, as well as tracking which testers are being thorough.
118
1196. Using the Feedback API
120
121To launch unguided feedback call the `openFeedbackView` method. We recommend that you call this from a GUI element.
86122
87 -(IBAction)launchFeedback {123 -(IBAction)launchFeedback {
88 [TestFlight openFeedbackView];124 [TestFlight openFeedbackView];
89 }125 }
90126
127If you want to create your own feedback form you can use the `submitCustomFeedback` method to submit the feedback that the user has entered.
128
129 -(IBAction)submitFeedbackPressed:(id)sender {
130 NSString *feedback = [self getUserFeedback];
131 [TestFlight submitCustomFeedback:feedback];
132 }
133
134The above sample assumes that [self getUserFeedback] is implemented such that it obtains the users feedback from the GUI element you have created and that submitFeedbackPressed is the action for your submit button.
135
91Once users have submitted feedback from inside of the application you can view it in the feedback area of your build page.136Once users have submitted feedback from inside of the application you can view it in the feedback area of your build page.
92137
936. Upload your build.1387. Upload your build.
94139
95After you have integrated the SDK into your application you need to upload your build to TestFlight. You can upload from your dashboard or or using the Upload API, full documentation here https://testflightapp.com/api/doc/ 140After you have integrated the SDK into your application you need to upload your build to TestFlight. You can upload from your dashboard or or using the Upload API, full documentation at <https://testflightapp.com/api/doc/>
96141
977. Add Questions to Checkpoints1428. Add Questions to Checkpoints
98143
99In order to ask a question, you'll need to associate it with a checkpoint. Make sure your checkpoints are initialized by running your app and hitting them all yourself before you start adding questions.144In order to ask a question, you'll need to associate it with a checkpoint. Make sure your checkpoints are initialized by running your app and hitting them all yourself before you start adding questions.
100145
101There are three question types available: Yes/No, Multiple Choice, and Long Answer.146There are three question types available: Yes/No, Multiple Choice, and Long Answer.
102147
103To create questions, visit your build's Questions page, and click on 'Add Question'. If you choose Multiple Choice, you'll need to enter a list of possible answers for your testers to choose from &mdash; otherwise, you'll only need to enter your question's, well, question. If your build has no questions, you can also choose to migrate questions from another build (because seriously &mdash; who wants to do all that typing again)?148To create questions, visit your builds Questions page and click on 'Add Question'. If you choose Multiple Choice, you'll need to enter a list of possible answers for your testers to choose from &mdash; otherwise, you'll only need to enter your question's, well, question. If your build has no questions, you can also choose to migrate questions from another build (because seriously &mdash; who wants to do all that typing again)?
104149
105After restarting your application on an approved device when you pass the checkpoint associated with your questions a Test Flight modal question form will appear on the screen asking the beta tester to answer your question.150After restarting your application on an approved device, when you pass the checkpoint associated with your questions a TestFlight modal question form will appear on the screen asking the beta tester to answer your question.
106151
107After you upload a new build to TestFlight you will need to associate questions once again. However if your checkpoints and questions have remained the same you can choose "copy questions from an older build" and choose which build to copy the questions from.152After you upload a new build to TestFlight you will need to associate questions once again. However if your checkpoints and questions have remained the same you can choose "copy questions from an older build" and choose which build to copy the questions from.
108153
1098. View your results.1549. View your results.
110155
111As testers install your build and start to test it you will see their session data on the web on the build report page for the build you've uploaded.156As testers install your build and start to test it you will see their session data on the web on the build report page for the build you've uploaded.
112157
1139. Advanced Exception Handling15810. Advanced Exception Handling
114159
115An unhandled exception means that your application is in an unknown state and there is not much that you can do but try and exit gracefully. Our SDK does its best to get the data we collect in this situation to you while it is crashing but it is designed in such a way that the important act of saving the data occurs in as safe way a way as possible before trying to send anything. If you do use unhandled exception or signal handlers install your handlers before calling takeOff our SDK will then call your handler while ours is running. For example:160An uncaught exception means that your application is in an unknown state and there is not much that you can do but try and exit gracefully. Our SDK does its best to get the data we collect in this situation to you while it is crashing, but it is designed in such a way that the important act of saving the data occurs in as safe way a way as possible before trying to send anything. If you do use uncaught exception or signal handlers install your handlers before calling `takeOff`. Our SDK will then call your handler while ours is running. For example:
116161
117 /*162 /*
118 My Apps Custom unhandled exception catcher, we do special stuff here, and TestFlight takes care of the rest163 My Apps Custom uncaught exception catcher, we do special stuff here, and TestFlight takes care of the rest
119 **/164 **/
120 void HandleExceptions(NSException *exception) {165 void HandleExceptions(NSException *exception) {
121 NSLog(@"This is where we save the application data during a exception");166 NSLog(@"This is where we save the application data during a exception");
@@ -135,7 +180,7 @@
135 NSSetUncaughtExceptionHandler(&HandleExceptions);180 NSSetUncaughtExceptionHandler(&HandleExceptions);
136 // create the signal action structure 181 // create the signal action structure
137 struct sigaction newSignalAction;182 struct sigaction newSignalAction;
138 // intialize the signal action structure183 // initialize the signal action structure
139 memset(&newSignalAction, 0, sizeof(newSignalAction));184 memset(&newSignalAction, 0, sizeof(newSignalAction));
140 // set SignalHandler as the handler in the signal action structure185 // set SignalHandler as the handler in the signal action structure
141 newSignalAction.sa_handler = &SignalHandler;186 newSignalAction.sa_handler = &SignalHandler;
@@ -145,11 +190,54 @@
145 sigaction(SIGBUS, &newSignalAction, NULL);190 sigaction(SIGBUS, &newSignalAction, NULL);
146 // Call takeOff after install your own unhandled exception and signal handlers191 // Call takeOff after install your own unhandled exception and signal handlers
147 [TestFlight takeOff:@"Insert your Team Token here"];192 [TestFlight takeOff:@"Insert your Team Token here"];
148 // continue with your application intialization193 // continue with your application initialization
149 }194 }
150195
151You do not need to add the above code if your application does not use exception handling already.196You do not need to add the above code if your application does not use exception handling already.
152197
19811. Remote Logging
199
200To perform remote logging you can use the TFLog method which logs in a few different methods described below. In order to make the transition from NSLog to TFLog easy we have used the same method signature for TFLog as NSLog. You can easily switch over to TFLog by adding the following macro to your header
201
202 #define NSLog TFLog
203
204That will do a switch from NSLog to TFLog, if you want more information, such as file name and line number you can use a macro like
205
206 #define NSLog(__FORMAT__, ...) TFLog((@"%s [Line %d] " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
207
208Which will produce output that looks like
209
210 -[HTFCheckpointsController showYesNoQuestion:] [Line 45] Pressed YES/NO
211
212We have implemented three different loggers.
213
214 1. TestFlight logger
215 2. Apple System Log logger
216 3. STDERR logger
217
218Each of the loggers log asynchronously and all TFLog calls are non blocking. The TestFlight logger writes its data to a file which is then sent to our servers on Session End events. The Apple System Logger sends its messages to the Apple System Log and are viewable using the Organizer in Xcode when the device is attached to your computer. The ASL logger can be disabled by turning it off in your TestFlight options
219
220 [TestFlight setOptions:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"logToConsole"]];
221
222The default option is YES.
223
224The STDERR logger sends log messages to STDERR so that you can see your log statements while debugging. The STDERR logger is only active when a debugger is attached to your application. If you do not wish to use the STDERR logger you can disable it by turning it off in your TestFlight options
225
226 [TestFlight setOptions:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"logToSTDERR"]];
227
228The default option is YES.
229
23012. iOS3
231
232We now require that anyone who is writing an application that supports iOS3 add the System.framework as an optional link. In order to provide a better shutdown experience we send any large log files to our servers in the background. To add System.framework as an optional link:
233 1. Select your Project in the Project Navigator
234 2. Select the target you want to enable the SDK for
235 3. Select the Build Phases tab
236 4. Open the Link Binary With Libraries Phase
237 5. Click the + to add a new library
238 6. Find libSystem.dylib in the list and add it
239 7. To the right of libSystem.dylib in the Link Binary With Libraries pane change "Required" to "Optional"
240
153END241END
154242
155Please contact us if you have any questions.243Please contact us if you have any questions.
156244
=== modified file 'TestFlight SDK/TestFlight.h'
--- TestFlight SDK/TestFlight.h 2011-10-18 19:18:05 +0000
+++ TestFlight SDK/TestFlight.h 2012-08-29 20:24:18 +0000
@@ -2,34 +2,95 @@
2// TestFlight.h2// TestFlight.h
3// libTestFlight3// libTestFlight
4//4//
5// Created by Colin Humber on 8/25/10.5// Created by Jonathan Janzen on 06/11/11.
6// Copyright 2010 23 Divide Apps. All rights reserved.6// Copyright 2011 TestFlight. All rights reserved.
77
8#import <Foundation/Foundation.h>8#import <Foundation/Foundation.h>
99#define TESTFLIGHT_SDK_VERSION @"1.0"
10#undef TFLog
11
12#if __cplusplus
13extern "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 */
10@interface TestFlight : NSObject {24@interface TestFlight : NSObject {
1125
12}26}
1327
14/**28/**
15 Add custom environment information29 * Add custom environment information
16 If you want to track a user name from your application you can add it here30 * 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
17 */34 */
18+ (void)addCustomEnvironmentInformation:(NSString *)information forKey:(NSString*)key;35+ (void)addCustomEnvironmentInformation:(NSString *)information forKey:(NSString*)key;
1936
20/**37/**
21 Starts a TestFlight session38 * Starts a TestFlight session
39 *
40 * @param teamToken Will be your team token obtained from https://testflightapp.com/dashboard/team/edit/
22 */41 */
23+ (void)takeOff:(NSString *)teamToken;42+ (void)takeOff:(NSString *)teamToken;
2443
25/**44/**
26 Track when a user has passed a checkpoint after the flight has taken off. Eg. passed level 1, posted high score45 * 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
27 */65 */
28+ (void)passCheckpoint:(NSString *)checkpointName;66+ (void)passCheckpoint:(NSString *)checkpointName;
2967
30/**68/**
31 Opens a feeback window that is not attached to a checkpoint69 * Opens a feedback window that is not attached to a checkpoint
32 */70 */
33+ (void)openFeedbackView;71+ (void)openFeedbackView;
3472
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
35@end96@end
3697
=== modified file 'TestFlight SDK/libTestFlight.a'
37Binary files TestFlight SDK/libTestFlight.a 2011-10-20 17:36:00 +0000 and TestFlight SDK/libTestFlight.a 2012-08-29 20:24:18 +0000 differ98Binary files TestFlight SDK/libTestFlight.a 2011-10-20 17:36:00 +0000 and TestFlight SDK/libTestFlight.a 2012-08-29 20:24:18 +0000 differ
=== modified file 'TestFlight SDK/release_notes.txt'
--- TestFlight SDK/release_notes.txt 2011-10-18 19:18:05 +0000
+++ TestFlight SDK/release_notes.txt 2012-08-29 20:24:18 +0000
@@ -1,8 +1,125 @@
11.0 - March 29, 2012
2Resolved occurrences of exceptions with the message "No background task exists with identifier 0"
3
41.0 BETA 1 - March 23, 2012
5Privacy Updates
6 UDID is no longer collected by the SDK. During testing please use [TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]]; to send the UDID so you can identify your testers. For release do not set +setDeviceIdentifier. See Beta Testing and Release Differentiation in the README or online at https://testflightapp.com/sdk/doc/1.0beta1/
7
80.8.3 - February 14, 2012
9Rolled previous beta code into release builds
10No longer allow in application updates to occur in applications that were obtained from the app store.
11
12Tested compiled library with:
13Xcode 4.3
14Xcode 4.2
15Xcode 4.1
16Xcode 3.2.6
17
180.8.3 BETA 5 - February 10, 2012
19Changed logging from asynchronous to synchronous.
20Resolved crash when looking for a log path failed.
21Added submitFeedback to the TestFlight class to allow for custom feedback forms.
22
230.8.3 BETA 4 - January 20, 2012
24Resolved an issue that occured when an application was upgraded from 0.8.3 BETA 1 to 0.8.3 BETA 3+ with unsent data from 0.8.3 BETA 1
25
260.8.3 BETA 3 - January 19, 2012
27On crash log files over 64k will not be sent until next launch.
28
29Known Issues:
30Logging massive amounts of data at the end of a session may prevent the application from launching in time on next launch
31
320.8.3 BETA 2 - January 13, 2012
33libz.dylib is now required to be added to your "Link Binary with Libraries" build phase
34Log file compression, The compression is done on an as needed basis rather than before sending
35Changed all outgoing data from JSON to MessagePack
36Added option logToSTDERR to disable the STDERR logger
37
380.8.3 BETA 1 - December 29, 2011
39In rare occurrences old session data that had not been sent to our server may have been discarded or attached to the wrong build. It is now no longer discarded
40Made sending of Session End events more robust
41Network queuing system does better bursting of unsent data
42Log files that are larger than 64K are now sent sometime after the next launch
43Log files that are larger than 16MB are no longer supported and will be replaced with a message indicating the log file was too large
44Fixed crashes while resuming from background
45
460.8.2 - December 20, 2011
47Promoted 0.8.2 BETA 4 to stable
48
49Known Issues:
50Under some circumstances Session End events may not be sent until the next launch.
51With large log files Session End events may take a long time to show up.
52
53Tested compiled library with:
54Xcode 4.3
55Xcode 4.2
56Xcode 4.1
57Xcode 3.2.6
58
590.8.2 BETA 4 - December 12, 2011
60Prevented "The string argument is NULL" from occuring during finishedHandshake in rare cases
61Resolved issue where data recorded while offline may not be sent
62
630.8.2 BETA 3 - December 8, 2011
64Added auto-release pools to background setup and tear down
65
660.8.2 BETA 2 - December 5, 2011
67Fixed the "pointer being freed was not allocated" bug
68
690.8.1 - November 18, 2011
70Implemented TFLog logging system, see README for more information
71Fixed an issue where Session End events may not be sent until next launch
72Fixed an issue where duplicate events could be sent
73Fixed an issue with Session End events not being sent from some iPod touch models
74
75Tested compiled library with:
76Xcode 4.2
77Xcode 4.1
78Xcode 3.2.6
79
800.8 - November 8, 2011
81Added SIGTRAP as a signal type that we catch
82Removed all Objective-c from crash reporting
83Removed the use of non signal safe functions from signal handling
84Created a signal safe way to get symbols from a stack trace
85Changed the keyboardType for Long Answer Questions and Feedback to allow for international character input
86Changed TESTFLIGHT_SDK_VERSION string to be an NSString
87Changed cache folder from Library/Caches/TestFlight to Library/Caches/com.testflight.testflightsdk
88Fixed issue with saving data when device is offline
89Fixed compability issues with iOS 3
90Added calling into the rootViewController shouldAutorotateToInterfaceOrientation if a rootViewController is set
91Made the comments in TestFlight.h compatible with Appledoc
92
93Tested compiled library with:
94Xcode 4.2
95Xcode 4.1
96Xcode 3.2
97
980.7.2 - September 29, 2011
99Changed TESTFLIGHT_SDK_VERSION string to be an NSString
100Fixed an issue where exiting an application while the SDK is active caused modal views to be dismissed
1010.7.1 - September 22, 2011
102Internal release
103Refactoring
1040.7 - September 21, 2011
105Moved TestFlight images and data to the Library/Caches folder
106Resolved an issue where sometimes the rootViewController could not be found and feedback, questions and upgrade views would not be displayed
107In application upgrade changed to allow skipping until the next version is installed and allows upgrades to be forced
108Fixed a memory leak when launching questions
1090.6 - September 2, 2011
110Renamed base64_encode to testflight_base64_encode to remove a conflict with other third party libraries
111Added ability to reinstall crash handlers when they are overwritten using the setOptions API
112Fixed an issue where crash reports might not get sent under certain circumstances
113Fixed a deadlock when the application is put in the background and then resumed before all information can be sent
114Fixed an issue when attempting to un-install all signal handlers during a signal
115Added support for landscape mode on the iPad to the Questions and Feedback views
116Crash reporting now works in versions of Xcode earlier than 4.2
117Fixed a memory leak during handshake
10.5 - August 19, 20111180.5 - August 19, 2011
2Feedback that is not attached to a checkpoint [TestFlight openFeedbackView]119Feedback that is not attached to a checkpoint [TestFlight openFeedbackView]
3Usability changes to question views120Usability changes to question views
4Removed pause and resume sessions, replaced with sessions being stopped and started121Removed pause and resume sessions, replaced with sessions being stopped and started
5Added text autocorrection to the Long Answer question type122Added text auto correction to the Long Answer question type
6Crash reports now send on crash instead of next launch123Crash reports now send on crash instead of next launch
70.4 - August 15, 20111240.4 - August 15, 2011
8In Application Feedback with Questions125In Application Feedback with Questions

Subscribers

People subscribed via source and target branches