diff --git a/Crashlytics/Crashlytics.framework/Versions/A/Crashlytics b/Crashlytics/Crashlytics.framework/Versions/A/Crashlytics index 1f7dd198..b9883dcb 100644 Binary files a/Crashlytics/Crashlytics.framework/Versions/A/Crashlytics and b/Crashlytics/Crashlytics.framework/Versions/A/Crashlytics differ diff --git a/Crashlytics/Crashlytics.framework/Versions/A/Headers/Crashlytics.h b/Crashlytics/Crashlytics.framework/Versions/A/Headers/Crashlytics.h index 989d276b..a99b331a 100644 --- a/Crashlytics/Crashlytics.framework/Versions/A/Headers/Crashlytics.h +++ b/Crashlytics/Crashlytics.framework/Versions/A/Headers/Crashlytics.h @@ -9,10 +9,10 @@ /** * - * 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 - * 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. + * 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 + * 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. * If the DEBUG preprocessor macro is not defined CLS_LOG uses CLSLog only. * * Example output: @@ -26,18 +26,18 @@ * **/ #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 - #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 /** - * + * * 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. * **/ -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. * **/ -OBJC_EXTERN void CLSNSLog(NSString *format, ...); +OBJC_EXTERN void CLSNSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2); @protocol CrashlyticsDelegate; -@interface Crashlytics : NSObject { -@private - NSString *_apiKey; - NSString *_dataDirectory; - NSString *_bundleIdentifier; - BOOL _installed; - NSMutableDictionary *_customAttributes; - id _user; - NSInteger _sendButtonIndex; - NSInteger _alwaysSendButtonIndex; - NSObject *_delegate; -} +@interface Crashlytics : NSObject @property (nonatomic, readonly, copy) NSString *apiKey; @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 * 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. * **/ @@ -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 - * 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 + * 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 + * 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. * - * 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 + * 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 * 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. * - * 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 - * contact information, we strongly recommend that you disclose this in your application's privacy + * 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 + * contact information, we strongly recommend that you disclose this in your application's privacy * policy. Data privacy is of our utmost concern. * **/ @@ -149,12 +138,12 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...); @end /** - * 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 + * 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 * them or copy them. **/ @protocol CLSCrashReport -@optional +@required /** * 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 - * 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, * 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 * 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. @@ -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 * 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. diff --git a/Crashlytics/Crashlytics.framework/Versions/A/Resources/Info.plist b/Crashlytics/Crashlytics.framework/Versions/A/Resources/Info.plist index b535b5cb..89eacb75 100644 Binary files a/Crashlytics/Crashlytics.framework/Versions/A/Resources/Info.plist and b/Crashlytics/Crashlytics.framework/Versions/A/Resources/Info.plist differ diff --git a/Crashlytics/Crashlytics.framework/run b/Crashlytics/Crashlytics.framework/run index 0d4ea176..5eb090e2 100755 Binary files a/Crashlytics/Crashlytics.framework/run and b/Crashlytics/Crashlytics.framework/run differ diff --git a/External/iCloudStoreManager b/External/iCloudStoreManager index 8faba0d3..b7480927 160000 --- a/External/iCloudStoreManager +++ b/External/iCloudStoreManager @@ -1 +1 @@ -Subproject commit 8faba0d3c35d471005c45280dc2670bc811e08c6 +Subproject commit b748092775b2ee07c4c494434b43c72fb589ab67 diff --git a/MasterPassword/MPAppDelegate_Store.m b/MasterPassword/MPAppDelegate_Store.m index 7e19f304..2aad15dd 100644 --- a/MasterPassword/MPAppDelegate_Store.m +++ b/MasterPassword/MPAppDelegate_Store.m @@ -203,11 +203,11 @@ static char managedObjectContextKey; 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) - iCloudEnabled = manager.cloudEnabled; - inf(@"Using iCloud? %@", iCloudEnabled? @"YES": @"NO"); + cloudEnabled = manager.cloudEnabled; + inf(@"Using iCloud? %@", cloudEnabled? @"YES": @"NO"); #ifdef TESTFLIGHT_SDK_VERSION [TestFlight passCheckpoint:cloudEnabled? MPCheckpointCloudEnabled: MPCheckpointCloudDisabled]; @@ -218,7 +218,7 @@ static char managedObjectContextKey; }]; #endif - [MPConfig get].iCloud = @(iCloudEnabled); + [MPConfig get].iCloud = @(cloudEnabled); } - (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didEncounterError:(NSError *)error cause:(UbiquityStoreManagerErrorCause)cause diff --git a/MasterPassword/iOS/MPAppDelegate.m b/MasterPassword/iOS/MPAppDelegate.m index 6eff88bc..c735e418 100644 --- a/MasterPassword/iOS/MPAppDelegate.m +++ b/MasterPassword/iOS/MPAppDelegate.m @@ -395,8 +395,8 @@ - (void)checkConfig { - if ([[MPConfig get].iCloud boolValue] != [self.storeManager iCloudEnabled]) - [self.storeManager useiCloudStore:[[MPConfig get].iCloud boolValue] alertUser:YES]; + if ([[MPConfig get].iCloud boolValue] != [self.storeManager cloudEnabled]) + self.storeManager.cloudEnabled = [[MPConfig get].iCloud boolValue]; if ([[MPiOSConfig get].sendInfo boolValue]) { if ([PearlLogger get].printLevel > PearlLogLevelInfo) [PearlLogger get].printLevel = PearlLogLevelInfo; @@ -629,12 +629,12 @@ #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 (!iCloudEnabled) { + if (!cloudEnabled) { [PearlAlert showAlertWithTitle:@"iCloud" message: @"iCloud is now disabled.\n\n" @@ -657,7 +657,7 @@ @"Apple can never see any of your passwords." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { - [self ubiquityStoreManager:manager didSwitchToiCloud:iCloudEnabled]; + [self ubiquityStoreManager:manager didSwitchToCloud:cloudEnabled]; } cancelTitle:[PearlStrings get].commonButtonThanks otherTitles:nil]; return; @@ -667,7 +667,7 @@ if (buttonIndex == [alert cancelButtonIndex]) return; if (buttonIndex == [alert firstOtherButtonIndex] + 1) - [manager useiCloudStore:YES alertUser:NO]; + manager.cloudEnabled = YES; } cancelTitle:@"Leave iCloud Off" otherTitles:@"Explain?", @"Enable iCloud", nil]; } } diff --git a/MasterPassword/iOS/MPUnlockViewController.m b/MasterPassword/iOS/MPUnlockViewController.m index 4ab36cea..00b586a5 100644 --- a/MasterPassword/iOS/MPUnlockViewController.m +++ b/MasterPassword/iOS/MPUnlockViewController.m @@ -164,15 +164,15 @@ [self initializeWordLabel:wordLabel]; } recurse:NO]; - [[NSNotificationCenter defaultCenter] addObserverForName:PersistentStoreDidChange object:nil queue:nil usingBlock: - ^(NSNotification *note) { - [self updateUsers]; - }]; - [[NSNotificationCenter defaultCenter] addObserverForName:PersistentStoreDidMergeChanges object:nil queue:nil usingBlock: - ^(NSNotification *note) { - [self updateUsers]; - }]; - + [[NSNotificationCenter defaultCenter] addObserverForName:UbiquityManagedStoreDidChangeNotification object:nil queue:nil + usingBlock:^(NSNotification *note) { + [self updateUsers]; + }]; + [[NSNotificationCenter defaultCenter] addObserverForName:UbiquityManagedStoreDidImportChangesNotification object:nil queue:nil + usingBlock:^(NSNotification *note) { + [self updateUsers]; + }]; + [self updateLayoutAnimated:NO allowScroll:YES completion:nil]; [super viewDidLoad];