diff --git a/HockeySDK.podspec b/HockeySDK.podspec index 16a13d69..a962826e 100644 --- a/HockeySDK.podspec +++ b/HockeySDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'HockeySDK' - s.version = '3.5.0rc2' + s.version = '3.5.0-rc3' s.license = 'MIT' s.platform = :ios, '5.0' s.summary = 'Distribute beta apps and collect crash reports with HockeyApp.' diff --git a/README.md b/README.md index add8cdd7..38fb56e9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -## Version 3.5.0 RC 2 +## Version 3.5.0 RC 3 -- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc2/docs/docs/Changelog.html) +- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc3/docs/docs/Changelog.html) ## Introduction @@ -31,10 +31,10 @@ The main SDK class is `BITHockeyManager`. It initializes all modules and provide ## Installation & Setup -- [Installation & Setup](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc2/docs/docs/Guide-Installation-Setup.html) (Recommended) -- [Installation & Setup Advanced](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc2/docs/docs/Guide-Installation-Setup-Advanced.html) (Using Git submodule and Xcode sub-project) -- [Identify and authenticate users of Ad-Hoc or Enterprise builds](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc2/docs/docs/HowTo-Authenticating-Users-on-iOS.html) -- [Migration from previous SDK Versions](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc2/docs/docs/Guide-Migration-Kits.html) +- [Installation & Setup](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc3/docs/docs/Guide-Installation-Setup.html) (Recommended) +- [Installation & Setup Advanced](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc3/docs/docs/Guide-Installation-Setup-Advanced.html) (Using Git submodule and Xcode sub-project) +- [Identify and authenticate users of Ad-Hoc or Enterprise builds](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc3/docs/docs/HowTo-Authenticating-Users-on-iOS.html) +- [Migration from previous SDK Versions](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc3/docs/docs/Guide-Migration-Kits.html) - [Mac Desktop Uploader](http://support.hockeyapp.net/kb/how-tos/how-to-upload-to-hockeyapp-on-a-mac) @@ -48,4 +48,4 @@ This documentation provides integrated help in Xcode for all public APIs and a s 3. Copy the content into ~`/Library/Developer/Shared/Documentation/DocSet` -The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.5.0rc2/](http://hockeyapp.net/help/sdk/ios/3.5.0rc2/) +The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.5.0rc3/](http://hockeyapp.net/help/sdk/ios/3.5.0rc3/) diff --git a/Support/buildnumber.xcconfig b/Support/buildnumber.xcconfig index 67311d30..7cde4d68 100644 --- a/Support/buildnumber.xcconfig +++ b/Support/buildnumber.xcconfig @@ -1,7 +1,7 @@ #include "HockeySDK.xcconfig" -BUILD_NUMBER = 21 -VERSION_STRING = 3.5.0RC2 +BUILD_NUMBER = 22 +VERSION_STRING = 3.5.0-RC3 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) BITHOCKEY_VERSION="@\""$(VERSION_STRING)"\"" BIT_ARM_ARCHS = armv7 armv7s arm64 BIT_SIM_ARCHS = x86_64 i386 diff --git a/docs/Changelog-template.md b/docs/Changelog-template.md index 77156273..3ea26cac 100644 --- a/docs/Changelog-template.md +++ b/docs/Changelog-template.md @@ -1,9 +1,46 @@ +## Version 3.5.0 RC 3 + +- General + + - [NEW] Added public access to the anonymous UUID that the SDK generates per app installation + - [NEW] Added possibility to overwrite SDK specific localization strings in the apps localization files + - [UPDATE] Podspec updates + - [BUGFIX] Fixed memory leaks + - [BUGFIX] Various minor bugfixes +

+ +- Crash Reporting + + - [UPDATE] Integrated PLCrashReporter 1.2 beta 3 + - [BUGFIX] Fixed crash if minimum OS version isn't provided + - [BUGFIX] Update private C function to use BIT namespace +

+ +- Feedback + + - [BUGFIX] Fixed some layout issues in the user info screen +

+ +- Ad-Hoc/Enterprise Updates + + - [BUGFIX] Fixed update view controller not showing updated content after using the check button + - [BUGFIX] Fixed usage value being reset on every app cold start +

+ +- Ad-Hoc/Enterprise Authentication + + - [NEW] Added web based user authentication + - [UPDATE] IMPORTANT: You need to call `[[BITHockeyManager sharedHockeyManager].authenticator authenticateInstallation];` yourself after startup when the authentication and/or verification should be performed and when it is safe to present a modal view controller! + - [UPDATE] Removed `automaticMode`. You now need to call `authenticateInstallation` when it is safe to do so or handle the complete process yourself. +

+ ## Version 3.5.0 RC 2 - General - [BUGFIX] Remove assertions from release build

+ - Ad-Hoc/Enterprise Updates - [BUGFIX] Add new iOS 7 icon sizes detection and adjust corner radius @@ -14,13 +51,15 @@ - General - [UPDATE] Documentation improvements nearly everywhere +

- Crash Reporting - [UPDATE] Integrated PLCrashReporter 1.2 beta 2 - [UPDATE] 64 bit crash reports now contain the correct architecture string - [UPDATE] Automatically add the users UDID or email to crash reports in Ad-Hoc/Enterprise builds if they are provided by BITAuthenticator - - [BUGFIX] Fix userName, userEmail and userID not being added to crash reports + - [BUGFIX] Fixed userName, userEmail and userID not being added to crash reports +

- App Store Updates diff --git a/docs/Guide-Installation-Setup-Advanced-template.md b/docs/Guide-Installation-Setup-Advanced-template.md index cfa1ed35..05724224 100644 --- a/docs/Guide-Installation-Setup-Advanced-template.md +++ b/docs/Guide-Installation-Setup-Advanced-template.md @@ -1,6 +1,6 @@ -## Version 3.5.0 RC 2 +## Version 3.5.0 RC 3 -- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc2/docs/docs/Changelog.html) +- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc3/docs/docs/Changelog.html) ## Introduction @@ -149,4 +149,4 @@ This documentation provides integrated help in Xcode for all public APIs and a s 3. Copy the content into ~`/Library/Developer/Shared/Documentation/DocSet` -The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.5.0rc2/](http://hockeyapp.net/help/sdk/ios/3.5.0rc2/) +The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.5.0rc3/](http://hockeyapp.net/help/sdk/ios/3.5.0rc3/) diff --git a/docs/Guide-Installation-Setup-template.md b/docs/Guide-Installation-Setup-template.md index 6b2a773b..62e11f1e 100644 --- a/docs/Guide-Installation-Setup-template.md +++ b/docs/Guide-Installation-Setup-template.md @@ -1,6 +1,6 @@ -## Version 3.5.0 RC 2 +## Version 3.5.0 RC 3 -- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc2/docs/docs/Changelog.html) +- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.5.0rc3/docs/docs/Changelog.html) ## Introduction @@ -116,4 +116,4 @@ This documentation provides integrated help in Xcode for all public APIs and a s 1. Copy `de.bitstadium.HockeySDK-iOS-3.5.0.docset` into ~`/Library/Developer/Shared/Documentation/DocSet` -The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.5.0rc2/](http://hockeyapp.net/help/sdk/ios/3.5.0rc2/) +The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.5.0rc3/](http://hockeyapp.net/help/sdk/ios/3.5.0rc3/) diff --git a/docs/HowTo-Authenticating-Users-on-iOS-template.md b/docs/HowTo-Authenticating-Users-on-iOS-template.md index 0aa79c7b..59093a61 100644 --- a/docs/HowTo-Authenticating-Users-on-iOS-template.md +++ b/docs/HowTo-Authenticating-Users-on-iOS-template.md @@ -8,7 +8,7 @@ HockeySDK 3.5 for iOS includes a new class called `BITAuthenticator` which serve Previous versions of HockeySDK for iOS used the response of the method `UIDevice#uniqueIdentifier` (aka the UDID) to identify which user was testing an app and which versions are installable on the user's device. `UIDevice#uniqueIdentifier` was deprecated with iOS 5 and we expect Apple to remove it from future versions of iOS. -`BITAuthenticator` offers four strategies for authentication: +`BITAuthenticator` offers five strategies for authentication: * **BITAuthenticatorIdentificationTypeAnonymous** (_Default_) @@ -25,22 +25,18 @@ Previous versions of HockeySDK for iOS used the response of the method `UIDevice * **BITAuthenticatorIdentificationTypeHockeyAppEmail** The user needs to enter the email address and password of his HockeyApp account. + +* **BITAuthenticatorIdentificationTypeWebAuth** -The `BITAuthenticator` class doesn't do anything on its own. In addition to setting up the behavior, you also need to trigger the process yourself. + The app opens Safari and asks the user to log in to his HockeyApp account. -The most simple option is to place a call to `[[BITHockeyManager sharedHockeyManager] authenticateInstallation]` in your code. This will show a UI asking for identification details according to the chosen strategy. +After setting up one of those strategies, you need to trigger the authentication process by calling -**IMPORTANT**: If your app shows a modal view on startup, make sure to call `authenticateInstallation` either once your modal view is fully presented (e.g. its `viewDidLoad:` method is processed) or once your modal view is dismissed. - -The second option is to implement your own workflow by using - - - (void) identifyWithCompletion:(void(^)(BOOL identified, NSError *error)) completion; - -to identify the current user depending on your strategy and + [[BITHockeyManager sharedHockeyManager] authenticateInstallation]; - - (void) validateWithCompletion:(void(^)(BOOL validated, NSError *error)) completion; +in your code. This will show a UI asking for identification details unless you set the strategy `BITAuthenticatorIdentificationTypeAnonymous` (then no UI is shown, but you still need to call this method). A [custom workflow](#custom-workflow) is explained at the end of this document. -to validate the user may still use the app if required. +**IMPORTANT**: If your app shows a modal view on startup, make sure to call `authenticateInstallation` either once your modal view is fully presented (e.g. its `viewDidLoad:` method is processed) or once your modal view is dismissed. The following sections explain the different strategies and their advantages / disadvantages. @@ -161,4 +157,64 @@ Advantages: Disadvantages: * Users need to be a tester, member, or developer of your app -* Users need to set a password on HockeyApp (even if they use Facebook Connect) \ No newline at end of file +* Users need to set a password on HockeyApp (even if they use Facebook Connect) + +## Authentication using Login via Safari + +Initialize HockeySDK with the following code: + + [[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"APP_ID" delegate:self]; + [[BITHockeyManager sharedHockeyManager].authenticator setIdentificationType:BITAuthenticatorIdentificationTypeWebAuth]; + [[BITHockeyManager sharedHockeyManager] startManager]; + [[BITHockeyManager sharedHockeyManager] authenticateInstallation]; + +Replace APP_ID with the your App ID (can be found on the app page). + +The SDK will ask the user to identify himself by opening Safari. Safari then opens your app again via an URL scheme. You need to add the URL scheme to your Info.plist and handle it in your application delegate: + +1. Open your Info.plist. + +2. Add a new key `CFBundleURLTypes`. + +3. Change the key of the first child item to `URL Schemes` or `CFBundleURLSchemes`. + +4. Enter `haAPP_ID` as the URL scheme with APP_ID being replaced by the App ID of your app. + +5. Open your AppDelegate.m. + +6. Add the following code: + + - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { + if( [[BITHockeyManager sharedHockeyManager].authenticator handleOpenURL:url + sourceApplication:sourceApplication + annotation:annotation]) { + return YES; + } + + /* Your own custom URL handlers */ + + return NO; + } + +Advantages: + +* HockeyApp can show which user has installed your app and how long he used it. +* The SDK only offers installable builds, i.e. with the UDID in the provisioning profile (if all devices of this user are in the provisioning profile). +* If you remove a user from your app, he will not be able to use it anymore (see documentation for `restrictApplicationUsage`) +* Works with any type of user accounts (even if they use Facebook Connect) + +Disadvantages: + +* Users need to be a tester, member, or developer of your app + +## Custom Workflow + +As an alternative, you can implement your own workflow with following two methods: + +1. Start the process to identify a new user with one of the above strategies. This method will show a modal view only if the user was not identified before: + + - (void) identifyWithCompletion:(void(^)(BOOL identified, NSError *error)) completion; + +2. Validate that the user is still a tester, member, or developer of your app. This will show an alert and a modal view only if the user could not be validated. Otherwise, the process will succeed without showing a message or view: + + - (void) validateWithCompletion:(void(^)(BOOL validated, NSError *error)) completion; \ No newline at end of file