Skip to content

Commit 1f6990c

Browse files
committed
ios keychain and userdefaults
1 parent 78d9c25 commit 1f6990c

File tree

4 files changed

+530
-4
lines changed

4 files changed

+530
-4
lines changed

plugin.xml

+6-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
44
xmlns:android="http://schemas.android.com/apk/res/android"
55
id="hu.dpal.phonegap.plugins.UniqueDeviceID"
6-
version="1.0.0">
6+
version="1.1.0">
77

88
<name>UniqueDeviceID</name>
99

@@ -38,13 +38,17 @@
3838
<config-file target="config.xml" parent="/*">
3939
<feature name="UniqueDeviceID">
4040
<param name="ios-package" value="CDVUniqueDeviceID" />
41+
<param name="onload" value="true" />
4142
</feature>
4243
</config-file>
44+
45+
<header-file src="src/ios/UICKeyChainStore.h" />
46+
<source-file src="src/ios/UICKeyChainStore.m" />
4347

4448
<header-file src="src/ios/CDVUniqueDeviceID.h" />
4549
<source-file src="src/ios/CDVUniqueDeviceID.m" />
4650

47-
<framework src="AdSupport.framework" />
51+
<framework src="Security.framework" />
4852
</platform>
4953

5054
</plugin>

src/ios/CDVUniqueDeviceID.m

+26-2
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,38 @@
55
//
66

77
#import "CDVUniqueDeviceID.h"
8-
#import <AdSupport/ASIdentifierManager.h>
8+
#import "UICKeyChainStore.h"
99

1010
@implementation CDVUniqueDeviceID
1111

1212
-(void)get:(CDVInvokedUrlCommand*)command
1313
{
1414
[self.commandDelegate runInBackground:^{
15-
NSString *uuid = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
15+
16+
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
17+
NSString *uuidUserDefaults = [defaults objectForKey:@"uuid"];
18+
19+
NSString *uuid = [UICKeyChainStore stringForKey:@"uuid"];
20+
21+
if ( uuid && !uuidUserDefaults) {
22+
[defaults setObject:uuid forKey:@"uuid"];
23+
[defaults synchronize];
24+
25+
} else if ( !uuid && !uuidUserDefaults ) {
26+
NSString *uuidString = [[NSUUID UUID] UUIDString];
27+
28+
[UICKeyChainStore setString:uuidString forKey:@"uuid"];
29+
30+
[defaults setObject:uuidString forKey:@"uuid"];
31+
[defaults synchronize];
32+
33+
uuid = [UICKeyChainStore stringForKey:@"uuid"];
34+
35+
} else if ( ![uuid isEqualToString:uuidUserDefaults] ) {
36+
[UICKeyChainStore setString:uuidUserDefaults forKey:@"uuid"];
37+
uuid = [UICKeyChainStore stringForKey:@"uuid"];
38+
}
39+
1640
CDVPluginResult *result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:uuid];
1741
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
1842
}];

src/ios/UICKeyChainStore.h

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
//
2+
// UICKeyChainStore.h
3+
// UICKeyChainStore
4+
//
5+
// Created by Kishikawa Katsumi on 11/11/20.
6+
// Copyright (c) 2011 Kishikawa Katsumi. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
@interface UICKeyChainStore : NSObject
12+
13+
@property (nonatomic, readonly) NSString *service;
14+
@property (nonatomic, readonly) NSString *accessGroup;
15+
16+
+ (NSString *)defaultService;
17+
+ (void)setDefaultService:(NSString *)defaultService;
18+
19+
+ (UICKeyChainStore *)keyChainStore;
20+
+ (UICKeyChainStore *)keyChainStoreWithService:(NSString *)service;
21+
+ (UICKeyChainStore *)keyChainStoreWithService:(NSString *)service accessGroup:(NSString *)accessGroup;
22+
23+
- (instancetype)init;
24+
- (instancetype)initWithService:(NSString *)service;
25+
- (instancetype)initWithService:(NSString *)service accessGroup:(NSString *)accessGroup;
26+
27+
+ (NSString *)stringForKey:(NSString *)key;
28+
+ (NSString *)stringForKey:(NSString *)key service:(NSString *)service;
29+
+ (NSString *)stringForKey:(NSString *)key service:(NSString *)service accessGroup:(NSString *)accessGroup;
30+
+ (BOOL)setString:(NSString *)value forKey:(NSString *)key;
31+
+ (BOOL)setString:(NSString *)value forKey:(NSString *)key service:(NSString *)service;
32+
+ (BOOL)setString:(NSString *)value forKey:(NSString *)key service:(NSString *)service accessGroup:(NSString *)accessGroup;
33+
34+
+ (NSData *)dataForKey:(NSString *)key;
35+
+ (NSData *)dataForKey:(NSString *)key service:(NSString *)service;
36+
+ (NSData *)dataForKey:(NSString *)key service:(NSString *)service accessGroup:(NSString *)accessGroup;
37+
+ (BOOL)setData:(NSData *)data forKey:(NSString *)key;
38+
+ (BOOL)setData:(NSData *)data forKey:(NSString *)key service:(NSString *)service;
39+
+ (BOOL)setData:(NSData *)data forKey:(NSString *)key service:(NSString *)service accessGroup:(NSString *)accessGroup;
40+
41+
- (void)setString:(NSString *)string forKey:(NSString *)key;
42+
- (NSString *)stringForKey:(NSString *)key;
43+
44+
- (void)setData:(NSData *)data forKey:(NSString *)key;
45+
- (NSData *)dataForKey:(NSString *)key;
46+
47+
+ (BOOL)removeItemForKey:(NSString *)key;
48+
+ (BOOL)removeItemForKey:(NSString *)key service:(NSString *)service;
49+
+ (BOOL)removeItemForKey:(NSString *)key service:(NSString *)service accessGroup:(NSString *)accessGroup;
50+
+ (BOOL)removeAllItems;
51+
+ (BOOL)removeAllItemsForService:(NSString *)service;
52+
+ (BOOL)removeAllItemsForService:(NSString *)service accessGroup:(NSString *)accessGroup;
53+
54+
- (void)removeItemForKey:(NSString *)key;
55+
- (void)removeAllItems;
56+
57+
- (void)synchronize;
58+
59+
// object subscripting
60+
61+
- (NSString *)objectForKeyedSubscript:(NSString <NSCopying> *)key;
62+
- (void)setObject:(NSString *)obj forKeyedSubscript:(NSString <NSCopying> *)key;
63+
64+
@end

0 commit comments

Comments
 (0)