2
0

Update of iOS code for updated API of UbiquityStoreManager.

[UPDATED]   UbiquityStoreManager's new API uses cloudEnabled instead of iCloudEnabled.
This commit is contained in:
Maarten Billemont 2013-01-27 00:54:54 -05:00
parent d5bffd86d6
commit ecd03ecf42
8 changed files with 47 additions and 58 deletions

View File

@ -9,10 +9,10 @@
/** /**
* *
* The CLS_LOG macro provides as easy way to gather more information in your log messages that are * The CLS_LOG macro provides as easy way to gather more information in your log messages that are
* sent with your crash data. CLS_LOG prepends your custom log message with the function name and * sent with your crash data. CLS_LOG prepends your custom log message with the function name and
* line number where the macro was used. If your app was built with the DEBUG preprocessor macro * line number where the macro was used. If your app was built with the DEBUG preprocessor macro
* defined CLS_LOG uses the CLSNSLog function which forwards your log message to NSLog and CLSLog. * defined CLS_LOG uses the CLSNSLog function which forwards your log message to NSLog and CLSLog.
* If the DEBUG preprocessor macro is not defined CLS_LOG uses CLSLog only. * If the DEBUG preprocessor macro is not defined CLS_LOG uses CLSLog only.
* *
* Example output: * Example output:
@ -26,18 +26,18 @@
* *
**/ **/
#ifdef DEBUG #ifdef DEBUG
#define CLS_LOG(__FORMAT__, ...) CLSNSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #define CLS_LOG(__FORMAT__, ...) CLSNSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else #else
#define CLS_LOG(__FORMAT__, ...) CLSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #define CLS_LOG(__FORMAT__, ...) CLSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#endif #endif
/** /**
* *
* Add logging that will be sent with your crash data. This logging will not show up in the system.log * Add logging that will be sent with your crash data. This logging will not show up in the system.log
* and will only be visible in your Crashlytics dashboard. * and will only be visible in your Crashlytics dashboard.
* *
**/ **/
OBJC_EXTERN void CLSLog(NSString *format, ...); OBJC_EXTERN void CLSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
/** /**
* *
@ -45,22 +45,11 @@ OBJC_EXTERN void CLSLog(NSString *format, ...);
* and your Crashlytics dashboard. It is not recommended for Release builds. * and your Crashlytics dashboard. It is not recommended for Release builds.
* *
**/ **/
OBJC_EXTERN void CLSNSLog(NSString *format, ...); OBJC_EXTERN void CLSNSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
@protocol CrashlyticsDelegate; @protocol CrashlyticsDelegate;
@interface Crashlytics : NSObject { @interface Crashlytics : NSObject
@private
NSString *_apiKey;
NSString *_dataDirectory;
NSString *_bundleIdentifier;
BOOL _installed;
NSMutableDictionary *_customAttributes;
id _user;
NSInteger _sendButtonIndex;
NSInteger _alwaysSendButtonIndex;
NSObject <CrashlyticsDelegate> *_delegate;
}
@property (nonatomic, readonly, copy) NSString *apiKey; @property (nonatomic, readonly, copy) NSString *apiKey;
@property (nonatomic, readonly, copy) NSString *version; @property (nonatomic, readonly, copy) NSString *version;
@ -73,7 +62,7 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...);
* The recommended way to install Crashlytics into your application is to place a call * The recommended way to install Crashlytics into your application is to place a call
* to +startWithAPIKey: in your -application:didFinishLaunchingWithOptions: method. * to +startWithAPIKey: in your -application:didFinishLaunchingWithOptions: method.
* *
* This delay defaults to 1 second in order to generally give the application time to * This delay defaults to 1 second in order to generally give the application time to
* fully finish launching. * fully finish launching.
* *
**/ **/
@ -105,21 +94,21 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...);
/** /**
* *
* Many of our customers have requested the ability to tie crashes to specific end-users of their * Many of our customers have requested the ability to tie crashes to specific end-users of their
* application in order to facilitate responses to support requests or permit the ability to reach * application in order to facilitate responses to support requests or permit the ability to reach
* out for more information. We allow you to specify up to three separate values for display within * out for more information. We allow you to specify up to three separate values for display within
* the Crashlytics UI - but please be mindful of your end-user's privacy. * the Crashlytics UI - but please be mindful of your end-user's privacy.
* *
* We recommend specifying a user identifier - an arbitrary string that ties an end-user to a record * We recommend specifying a user identifier - an arbitrary string that ties an end-user to a record
* in your system. This could be a database id, hash, or other value that is meaningless to a * in your system. This could be a database id, hash, or other value that is meaningless to a
* third-party observer but can be indexed and queried by you. * third-party observer but can be indexed and queried by you.
* *
* Optionally, you may also specify the end-user's name or username, as well as email address if you * Optionally, you may also specify the end-user's name or username, as well as email address if you
* do not have a system that works well with obscured identifiers. * do not have a system that works well with obscured identifiers.
* *
* Pursuant to our EULA, this data is transferred securely throughout our system and we will not * Pursuant to our EULA, this data is transferred securely throughout our system and we will not
* disseminate end-user data unless required to by law. That said, if you choose to provide end-user * disseminate end-user data unless required to by law. That said, if you choose to provide end-user
* contact information, we strongly recommend that you disclose this in your application's privacy * contact information, we strongly recommend that you disclose this in your application's privacy
* policy. Data privacy is of our utmost concern. * policy. Data privacy is of our utmost concern.
* *
**/ **/
@ -149,12 +138,12 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...);
@end @end
/** /**
* The CLSCrashReport protocol exposes methods that you can call on crash report objects passed * The CLSCrashReport protocol exposes methods that you can call on crash report objects passed
* to delegate methods. If you want these values or the entire object to stay in memory retain * to delegate methods. If you want these values or the entire object to stay in memory retain
* them or copy them. * them or copy them.
**/ **/
@protocol CLSCrashReport <NSObject> @protocol CLSCrashReport <NSObject>
@optional @required
/** /**
* Returns the session identifier for the crash report. * Returns the session identifier for the crash report.
@ -171,7 +160,7 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...);
/** /**
* *
* The CrashlyticsDelegate protocol provides a mechanism for your application to take * The CrashlyticsDelegate protocol provides a mechanism for your application to take
* action on events that occur in the Crashlytics crash reporting system. You can make * action on events that occur in the Crashlytics crash reporting system. You can make
* use of these calls by assigning an object to the Crashlytics' delegate property directly, * use of these calls by assigning an object to the Crashlytics' delegate property directly,
* or through the convenience startWithAPIKey:delegate:... methods. * or through the convenience startWithAPIKey:delegate:... methods.
* *
@ -181,7 +170,7 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...);
/** /**
* *
* Called once a Crashlytics instance has determined that the last execution of the * Called once a Crashlytics instance has determined that the last execution of the
* application ended in a crash. This is called some time after the crash reporting * application ended in a crash. This is called some time after the crash reporting
* process has begun. If you have specified a delay in one of the * process has begun. If you have specified a delay in one of the
* startWithAPIKey:... calls, this will take at least that long to be invoked. * startWithAPIKey:... calls, this will take at least that long to be invoked.
@ -191,7 +180,7 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...);
/** /**
* *
* Just like crashlyticsDidDetectCrashDuringPreviousExecution this delegate method is * Just like crashlyticsDidDetectCrashDuringPreviousExecution this delegate method is
* called once a Crashlytics instance has determined that the last execution of the * called once a Crashlytics instance has determined that the last execution of the
* application ended in a crash. A CLSCrashReport is passed back that contains data about * application ended in a crash. A CLSCrashReport is passed back that contains data about
* the last crash report that was generated. See the CLSCrashReport protocol for method details. * the last crash report that was generated. See the CLSCrashReport protocol for method details.

Binary file not shown.

@ -1 +1 @@
Subproject commit 8faba0d3c35d471005c45280dc2670bc811e08c6 Subproject commit b748092775b2ee07c4c494434b43c72fb589ab67

View File

@ -203,11 +203,11 @@ static char managedObjectContextKey;
dbg(@"[StoreManager] %@", message); dbg(@"[StoreManager] %@", message);
} }
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didSwitchToiCloud:(BOOL)iCloudEnabled { - (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didSwitchToCloud:(BOOL)cloudEnabled {
// manager.cloudEnabled is more reliable (eg. iOS' MPAppDelegate tampers with didSwitch a bit) // manager.cloudEnabled is more reliable (eg. iOS' MPAppDelegate tampers with didSwitch a bit)
iCloudEnabled = manager.cloudEnabled; cloudEnabled = manager.cloudEnabled;
inf(@"Using iCloud? %@", iCloudEnabled? @"YES": @"NO"); inf(@"Using iCloud? %@", cloudEnabled? @"YES": @"NO");
#ifdef TESTFLIGHT_SDK_VERSION #ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:cloudEnabled? MPCheckpointCloudEnabled: MPCheckpointCloudDisabled]; [TestFlight passCheckpoint:cloudEnabled? MPCheckpointCloudEnabled: MPCheckpointCloudDisabled];
@ -218,7 +218,7 @@ static char managedObjectContextKey;
}]; }];
#endif #endif
[MPConfig get].iCloud = @(iCloudEnabled); [MPConfig get].iCloud = @(cloudEnabled);
} }
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didEncounterError:(NSError *)error cause:(UbiquityStoreManagerErrorCause)cause - (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didEncounterError:(NSError *)error cause:(UbiquityStoreManagerErrorCause)cause

View File

@ -395,8 +395,8 @@
- (void)checkConfig { - (void)checkConfig {
if ([[MPConfig get].iCloud boolValue] != [self.storeManager iCloudEnabled]) if ([[MPConfig get].iCloud boolValue] != [self.storeManager cloudEnabled])
[self.storeManager useiCloudStore:[[MPConfig get].iCloud boolValue] alertUser:YES]; self.storeManager.cloudEnabled = [[MPConfig get].iCloud boolValue];
if ([[MPiOSConfig get].sendInfo boolValue]) { if ([[MPiOSConfig get].sendInfo boolValue]) {
if ([PearlLogger get].printLevel > PearlLogLevelInfo) if ([PearlLogger get].printLevel > PearlLogLevelInfo)
[PearlLogger get].printLevel = PearlLogLevelInfo; [PearlLogger get].printLevel = PearlLogLevelInfo;
@ -629,12 +629,12 @@
#pragma mark - UbiquityStoreManagerDelegate #pragma mark - UbiquityStoreManagerDelegate
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didSwitchToiCloud:(BOOL)iCloudEnabled { - (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didSwitchToCloud:(BOOL)cloudEnabled {
[super ubiquityStoreManager:manager didSwitchToiCloud:iCloudEnabled]; [super ubiquityStoreManager:manager didSwitchToCloud:cloudEnabled];
if (![[MPConfig get].iCloudDecided boolValue]) { if (![[MPConfig get].iCloudDecided boolValue]) {
if (!iCloudEnabled) { if (!cloudEnabled) {
[PearlAlert showAlertWithTitle:@"iCloud" [PearlAlert showAlertWithTitle:@"iCloud"
message: message:
@"iCloud is now disabled.\n\n" @"iCloud is now disabled.\n\n"
@ -657,7 +657,7 @@
@"Apple can never see any of your passwords." @"Apple can never see any of your passwords."
viewStyle:UIAlertViewStyleDefault viewStyle:UIAlertViewStyleDefault
initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
[self ubiquityStoreManager:manager didSwitchToiCloud:iCloudEnabled]; [self ubiquityStoreManager:manager didSwitchToCloud:cloudEnabled];
} }
cancelTitle:[PearlStrings get].commonButtonThanks otherTitles:nil]; cancelTitle:[PearlStrings get].commonButtonThanks otherTitles:nil];
return; return;
@ -667,7 +667,7 @@
if (buttonIndex == [alert cancelButtonIndex]) if (buttonIndex == [alert cancelButtonIndex])
return; return;
if (buttonIndex == [alert firstOtherButtonIndex] + 1) if (buttonIndex == [alert firstOtherButtonIndex] + 1)
[manager useiCloudStore:YES alertUser:NO]; manager.cloudEnabled = YES;
} cancelTitle:@"Leave iCloud Off" otherTitles:@"Explain?", @"Enable iCloud", nil]; } cancelTitle:@"Leave iCloud Off" otherTitles:@"Explain?", @"Enable iCloud", nil];
} }
} }

View File

@ -164,15 +164,15 @@
[self initializeWordLabel:wordLabel]; [self initializeWordLabel:wordLabel];
} recurse:NO]; } recurse:NO];
[[NSNotificationCenter defaultCenter] addObserverForName:PersistentStoreDidChange object:nil queue:nil usingBlock: [[NSNotificationCenter defaultCenter] addObserverForName:UbiquityManagedStoreDidChangeNotification object:nil queue:nil
^(NSNotification *note) { usingBlock:^(NSNotification *note) {
[self updateUsers]; [self updateUsers];
}]; }];
[[NSNotificationCenter defaultCenter] addObserverForName:PersistentStoreDidMergeChanges object:nil queue:nil usingBlock: [[NSNotificationCenter defaultCenter] addObserverForName:UbiquityManagedStoreDidImportChangesNotification object:nil queue:nil
^(NSNotification *note) { usingBlock:^(NSNotification *note) {
[self updateUsers]; [self updateUsers];
}]; }];
[self updateLayoutAnimated:NO allowScroll:YES completion:nil]; [self updateLayoutAnimated:NO allowScroll:YES completion:nil];
[super viewDidLoad]; [super viewDidLoad];