Added method configureWithBetaIdentifier:liveIdentifier:delegate.

This commit is contained in:
Thomas Dohmke 2011-12-03 16:31:08 +01:00
parent d8bb3b07eb
commit 2f4dc46c57
2 changed files with 58 additions and 4 deletions

View File

@ -19,14 +19,23 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE. // THE SOFTWARE.
@protocol CNSHockeyManagerDelegate <NSObject>
@optional
- (BOOL)shouldUseLiveIdenfitier;
@end
@interface CNSHockeyManager : NSObject { @interface CNSHockeyManager : NSObject {
@private @private
id delegate;
NSString *appIdentifier; NSString *appIdentifier;
} }
+ (CNSHockeyManager *)sharedHockeyManager; + (CNSHockeyManager *)sharedHockeyManager;
- (void)configureWithIdentifier:(NSString *)appIdentifier delegate:(id)delegate; - (void)configureWithIdentifier:(NSString *)appIdentifier delegate:(id)delegate;
- (void)configureWithBetaIdentifier:(NSString *)betaIdentifier liveIdentifier:(NSString *)liveIdentifier delegate:(id)delegate;
@end @end

View File

@ -25,12 +25,18 @@
@interface CNSHockeyManager () @interface CNSHockeyManager ()
- (BOOL)shouldUseLiveIdenfitier;
- (void)configureJMC; - (void)configureJMC;
- (void)configureHockeyManager;
- (void)configureQuincyManager;
@end @end
@implementation CNSHockeyManager @implementation CNSHockeyManager
#pragma mark - Public Class Methods
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000 #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000
+ (CNSHockeyManager *)sharedHockeyManager { + (CNSHockeyManager *)sharedHockeyManager {
static CNSHockeyManager *sharedInstance = nil; static CNSHockeyManager *sharedInstance = nil;
@ -71,6 +77,8 @@
return (jmcClass) && ([jmcClass respondsToSelector:@selector(instance)]); return (jmcClass) && ([jmcClass respondsToSelector:@selector(instance)]);
} }
#pragma mark - Private Class Methods
+ (void)disableJMCCrashReporter { + (void)disableJMCCrashReporter {
id jmcClass = NSClassFromString(@"JMC"); id jmcClass = NSClassFromString(@"JMC");
id jmcInstance = [jmcClass performSelector:@selector(instance)]; id jmcInstance = [jmcClass performSelector:@selector(instance)];
@ -111,18 +119,53 @@
[invocation invoke]; [invocation invoke];
} }
#pragma mark - Public Instance Methods
- (void)configureWithIdentifier:(NSString *)newAppIdentifier delegate:(id)delegate { - (void)configureWithIdentifier:(NSString *)newAppIdentifier delegate:(id)delegate {
[appIdentifier release]; [appIdentifier release];
appIdentifier = [newAppIdentifier copy]; appIdentifier = [newAppIdentifier copy];
// Crash Reporting [self configureQuincyManager];
[self configureHockeyManager];
}
- (void)configureWithBetaIdentifier:(NSString *)betaIdentifier liveIdentifier:(NSString *)liveIdentifier delegate:(id)delegate {
[appIdentifier release];
if ([self shouldUseLiveIdenfitier]) {
appIdentifier = [liveIdentifier copy];
[self configureQuincyManager];
}
else {
appIdentifier = [betaIdentifier copy];
[self configureQuincyManager];
[self configureHockeyManager];
}
}
#pragma mark - Private Instance Methods
- (BOOL)shouldUseLiveIdenfitier {
BOOL delegateResult = NO;
if ([delegate respondsToSelector:@selector(shouldUseLiveIdenfitier)]) {
delegateResult = [(NSObject <CNSHockeyManagerDelegate>*)delegate shouldUseLiveIdenfitier];
}
return (delegateResult) || ([[BWHockeyManager sharedHockeyManager] isAppStoreEnvironment]);
}
- (void)configureQuincyManager {
[[BWQuincyManager sharedQuincyManager] setAppIdentifier:appIdentifier]; [[BWQuincyManager sharedQuincyManager] setAppIdentifier:appIdentifier];
}
// Distribution
- (void)configureHockeyManager {
[[BWHockeyManager sharedHockeyManager] setAppIdentifier:appIdentifier]; [[BWHockeyManager sharedHockeyManager] setAppIdentifier:appIdentifier];
[[BWHockeyManager sharedHockeyManager] setCheckForTracker:YES]; [[BWHockeyManager sharedHockeyManager] setCheckForTracker:YES];
// JMC // Only if JMC is part of the project
if ([[self class] isJMCPresent]) { if ([[self class] isJMCPresent]) {
[[BWHockeyManager sharedHockeyManager] addObserver:self forKeyPath:@"trackerConfig" options:0 context:nil]; [[BWHockeyManager sharedHockeyManager] addObserver:self forKeyPath:@"trackerConfig" options:0 context:nil];
[[self class] disableJMCCrashReporter]; [[self class] disableJMCCrashReporter];
@ -168,6 +211,8 @@
- (void)dealloc { - (void)dealloc {
[appIdentifier release], appIdentifier = nil; [appIdentifier release], appIdentifier = nil;
delegate = nil;
[super dealloc]; [super dealloc];
} }