11#import " iOSNative.h"
22
33
4+
5+
6+ @implementation iCloudKeyValueStore
7+
48static NSUbiquitousKeyValueStore *keyValueStore;
59static NSDictionary *cloudDictionary;
6- static BOOL iCloudInited;
7- static BOOL availability;
8- static NSInteger availabilityAttemptsCount;
10+ static BOOL inited;
911
10- @implementation iCloudKeyValueStore
11- +( BOOL ) userLoggedIn {
12+ +( BOOL ) IsUserLoggedIn
13+ {
1214 return [[NSFileManager defaultManager ] ubiquityIdentityToken ] != nil ;
1315}
14- +( void ) init {
15- if (!iCloudInited && [iCloudKeyValueStore userLoggedIn ]){
16- @autoreleasepool {
17- NSLog ( @" init iCloud! " );
18- }
16+
17+ +( void ) InitICloud
18+ {
19+ if (!inited && [iCloudKeyValueStore IsUserLoggedIn ])
20+ {
1921 keyValueStore = [NSUbiquitousKeyValueStore defaultStore ];
20-
2122 cloudDictionary = [keyValueStore dictionaryRepresentation ];
22- availabilityAttemptsCount = 0 ;
23- iCloudInited = YES ;
23+ inited = YES ;
2424 }
2525}
2626
27- +(BOOL )checkForAvailability {
28- if (availabilityAttemptsCount > 20 ){
29- return availability;
30- }
27+ static BOOL canWrite;
28+ +(BOOL )IsICloudAvailable
29+ {
30+ [iCloudKeyValueStore InitICloud ];
31+ if (![iCloudKeyValueStore IsUserLoggedIn ])
32+ return NO ;
3133
32- if (![iCloudKeyValueStore userLoggedIn ] || !iCloudInited || !keyValueStore){
33- availability = NO ;
34- }
35- else if (iCloudInited && !availability && availabilityAttemptsCount < 20 ){
34+ if (!canWrite)
35+ {
3636 NSDate *nowDate = [NSDate date ];
3737 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc ] init ];
3838 [dateFormatter setDateFormat: @" yyyy-MM-dd HH:mm:ss" ];
@@ -42,24 +42,15 @@ +(BOOL)checkForAvailability{
4242
4343 NSString *keyString = @" initKey" ;
4444 [keyValueStore setString: valueString forKey: keyString];
45-
46- if ([[keyValueStore objectForKey: keyString] isEqualToString: valueString])
47- {
48- availability = [keyValueStore synchronize ];
49- }
50- else {
51- availability = NO ;
52- }
53-
45+ canWrite = [[keyValueStore objectForKey: keyString] isEqualToString: valueString] && [keyValueStore synchronize ];
5446 }
55- LOG ([NSString stringWithFormat: @" iCloud availability: %@ " , availability ? @" YES" : @" NO" ]);
56- availabilityAttemptsCount ++;
57- return availability;
5847
48+ return canWrite;
5949}
60- +(BOOL )IsICloudAvailable
50+
51+ +(BOOL ) Synchronize
6152{
62- return [iCloudKeyValueStore checkForAvailability ];
53+ return [keyValueStore synchronize ];
6354}
6455
6556+(BOOL )KeyExists : (NSString *)key
@@ -197,9 +188,7 @@ +(BOOL)SetString:(NSString *)key setValue:(NSString *)value
197188 return NO ;
198189}
199190
200- +(BOOL ) Synchronize {
201- return [keyValueStore synchronize ];
202- }
191+
203192@end
204193
205194
0 commit comments