Skip to content

Commit 2176a9d

Browse files
committed
重写iCloud的Available检测 & 重命名Native代码内部分成员名
1 parent f1b6068 commit 2176a9d

3 files changed

Lines changed: 29 additions & 40 deletions

File tree

Plugins/iOS/Native/ExternC.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ void _RemoveAllPendingNotifications(){
227227

228228
//iCloudKeyValueStore
229229
void _InitializeICloud(){
230-
[iCloudKeyValueStore init];
230+
[iCloudKeyValueStore InitICloud];
231231
}
232232

233233
bool _IsICloudAvailable(){

Plugins/iOS/Native/iCloudKeyValueStore.mm

Lines changed: 27 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
11
#import "iOSNative.h"
22

33

4+
5+
6+
@implementation iCloudKeyValueStore
7+
48
static NSUbiquitousKeyValueStore *keyValueStore;
59
static 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

Plugins/iOS/Native/iOSNative.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ extern UIViewController *UnityGetGLViewController();
5454

5555

5656
@interface iCloudKeyValueStore : NSObject
57-
+(void)init;
57+
+(void)InitICloud;
5858
+(BOOL)IsICloudAvailable;
5959
+(BOOL)KeyExists:(NSString *)key;
6060
+(BOOL)ClearICloudSave;

0 commit comments

Comments
 (0)