Commit a7a9ffbc25094d0fcf3c9270175b8b9152fe256a

Authored by 张旭
1 parent 2e268434

更改存储uid到钥匙串

CNLiveUserSystemDemo.xcodeproj/project.pbxproj
@@ -83,6 +83,7 @@ @@ -83,6 +83,7 @@
83 B6B54BEA1D8D009800089C9C /* UserInfoHeaderImageTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BE91D8D009800089C9C /* UserInfoHeaderImageTableViewCell.m */; }; 83 B6B54BEA1D8D009800089C9C /* UserInfoHeaderImageTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BE91D8D009800089C9C /* UserInfoHeaderImageTableViewCell.m */; };
84 B6B54BED1D8D011000089C9C /* UserInfoTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BEC1D8D011000089C9C /* UserInfoTableViewCell.m */; }; 84 B6B54BED1D8D011000089C9C /* UserInfoTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BEC1D8D011000089C9C /* UserInfoTableViewCell.m */; };
85 B6B54BF01D8D025A00089C9C /* ModifyUserInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BEF1D8D025A00089C9C /* ModifyUserInfoViewController.m */; }; 85 B6B54BF01D8D025A00089C9C /* ModifyUserInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BEF1D8D025A00089C9C /* ModifyUserInfoViewController.m */; };
  86 + D23A472722D48B8C00A4B465 /* NSString+Keychain.m in Sources */ = {isa = PBXBuildFile; fileRef = D23A472522D48B8C00A4B465 /* NSString+Keychain.m */; };
86 D273A1DC1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = D273A1DB1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m */; }; 87 D273A1DC1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = D273A1DB1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m */; };
87 D273A1DF1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m in Sources */ = {isa = PBXBuildFile; fileRef = D273A1DE1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m */; }; 88 D273A1DF1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m in Sources */ = {isa = PBXBuildFile; fileRef = D273A1DE1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m */; };
88 D2D25B171ED94BCE00B4B18B /* EmailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2D25B161ED94BCE00B4B18B /* EmailViewController.m */; }; 89 D2D25B171ED94BCE00B4B18B /* EmailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2D25B161ED94BCE00B4B18B /* EmailViewController.m */; };
@@ -255,6 +256,8 @@ @@ -255,6 +256,8 @@
255 B6B54BEC1D8D011000089C9C /* UserInfoTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserInfoTableViewCell.m; sourceTree = "<group>"; }; 256 B6B54BEC1D8D011000089C9C /* UserInfoTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserInfoTableViewCell.m; sourceTree = "<group>"; };
256 B6B54BEE1D8D025A00089C9C /* ModifyUserInfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModifyUserInfoViewController.h; sourceTree = "<group>"; }; 257 B6B54BEE1D8D025A00089C9C /* ModifyUserInfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModifyUserInfoViewController.h; sourceTree = "<group>"; };
257 B6B54BEF1D8D025A00089C9C /* ModifyUserInfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModifyUserInfoViewController.m; sourceTree = "<group>"; }; 258 B6B54BEF1D8D025A00089C9C /* ModifyUserInfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModifyUserInfoViewController.m; sourceTree = "<group>"; };
  259 + D23A472522D48B8C00A4B465 /* NSString+Keychain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Keychain.m"; sourceTree = "<group>"; };
  260 + D23A472622D48B8C00A4B465 /* NSString+Keychain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Keychain.h"; sourceTree = "<group>"; };
258 D273A1DA1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveEmailModifyPassword.h; sourceTree = "<group>"; }; 261 D273A1DA1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveEmailModifyPassword.h; sourceTree = "<group>"; };
259 D273A1DB1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveEmailModifyPassword.m; sourceTree = "<group>"; }; 262 D273A1DB1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveEmailModifyPassword.m; sourceTree = "<group>"; };
260 D273A1DD1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveCheckVerificationCode.h; sourceTree = "<group>"; }; 263 D273A1DD1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveCheckVerificationCode.h; sourceTree = "<group>"; };
@@ -517,6 +520,8 @@ @@ -517,6 +520,8 @@
517 812642F71D86A7E500B402CA /* CNLiveUserSystemSDK */ = { 520 812642F71D86A7E500B402CA /* CNLiveUserSystemSDK */ = {
518 isa = PBXGroup; 521 isa = PBXGroup;
519 children = ( 522 children = (
  523 + D23A472622D48B8C00A4B465 /* NSString+Keychain.h */,
  524 + D23A472522D48B8C00A4B465 /* NSString+Keychain.m */,
520 812642F81D86A83100B402CA /* CNLiveUserSystemCenter.h */, 525 812642F81D86A83100B402CA /* CNLiveUserSystemCenter.h */,
521 812642F91D86A83100B402CA /* CNLiveUserSystemCenter.m */, 526 812642F91D86A83100B402CA /* CNLiveUserSystemCenter.m */,
522 8187A8FC1D8E90C5007FAFB6 /* CNLiveUserManager.h */, 527 8187A8FC1D8E90C5007FAFB6 /* CNLiveUserManager.h */,
@@ -693,6 +698,7 @@ @@ -693,6 +698,7 @@
693 developmentRegion = English; 698 developmentRegion = English;
694 hasScannedForEncodings = 0; 699 hasScannedForEncodings = 0;
695 knownRegions = ( 700 knownRegions = (
  701 + English,
696 en, 702 en,
697 Base, 703 Base,
698 ); 704 );
@@ -766,6 +772,7 @@ @@ -766,6 +772,7 @@
766 8116F8F11D891BCD0084FE49 /* RegistBasicInformationView.m in Sources */, 772 8116F8F11D891BCD0084FE49 /* RegistBasicInformationView.m in Sources */,
767 8187A8F61D8E6486007FAFB6 /* NSObject+UserModel.m in Sources */, 773 8187A8F61D8E6486007FAFB6 /* NSObject+UserModel.m in Sources */,
768 811600F11D927E7E003CAE7D /* SDWebImageCompat.m in Sources */, 774 811600F11D927E7E003CAE7D /* SDWebImageCompat.m in Sources */,
  775 + D23A472722D48B8C00A4B465 /* NSString+Keychain.m in Sources */,
769 811600F31D927E7E003CAE7D /* SDWebImageDownloader.m in Sources */, 776 811600F31D927E7E003CAE7D /* SDWebImageDownloader.m in Sources */,
770 811600F41D927E7E003CAE7D /* SDWebImageDownloaderOperation.m in Sources */, 777 811600F41D927E7E003CAE7D /* SDWebImageDownloaderOperation.m in Sources */,
771 811600F21D927E7E003CAE7D /* SDWebImageDecoder.m in Sources */, 778 811600F21D927E7E003CAE7D /* SDWebImageDecoder.m in Sources */,
@@ -974,7 +981,7 @@ @@ -974,7 +981,7 @@
974 "-fobjc-arc", 981 "-fobjc-arc",
975 "-ObjC", 982 "-ObjC",
976 ); 983 );
977 - PRODUCT_BUNDLE_IDENTIFIER = "shixunzhongguo-cnlive"; 984 + PRODUCT_BUNDLE_IDENTIFIER = "shixunzhongguo-cnlive8";
978 PRODUCT_NAME = "$(TARGET_NAME)"; 985 PRODUCT_NAME = "$(TARGET_NAME)";
979 PROVISIONING_PROFILE = ""; 986 PROVISIONING_PROFILE = "";
980 PROVISIONING_PROFILE_SPECIFIER = ""; 987 PROVISIONING_PROFILE_SPECIFIER = "";
@@ -1007,7 +1014,7 @@ @@ -1007,7 +1014,7 @@
1007 "-fobjc-arc", 1014 "-fobjc-arc",
1008 "-ObjC", 1015 "-ObjC",
1009 ); 1016 );
1010 - PRODUCT_BUNDLE_IDENTIFIER = "shixunzhongguo-cnlive"; 1017 + PRODUCT_BUNDLE_IDENTIFIER = "shixunzhongguo-cnlive8";
1011 PRODUCT_NAME = "$(TARGET_NAME)"; 1018 PRODUCT_NAME = "$(TARGET_NAME)";
1012 PROVISIONING_PROFILE = ""; 1019 PROVISIONING_PROFILE = "";
1013 PROVISIONING_PROFILE_SPECIFIER = ""; 1020 PROVISIONING_PROFILE_SPECIFIER = "";
CNLiveUserSystemDemo/AppDelegate.m
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 18
19 19
20 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 20 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
21 - 21 +
22 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 22 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
23 ViewController *vc = [[ViewController alloc] init]; 23 ViewController *vc = [[ViewController alloc] init];
24 UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:vc]; 24 UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:vc];
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 [WXApi registerApp:WeChatAppKey]; 30 [WXApi registerApp:WeChatAppKey];
31 [WeiboSDK enableDebugMode:YES]; 31 [WeiboSDK enableDebugMode:YES];
32 [WeiboSDK registerApp:SinaAppKey]; 32 [WeiboSDK registerApp:SinaAppKey];
33 - 33 + NSLog(@"111didFinishLaunchingWithOptions");
34 return YES; 34 return YES;
35 } 35 }
36 36
@@ -60,6 +60,7 @@ @@ -60,6 +60,7 @@
60 } 60 }
61 61
62 - (void)applicationDidBecomeActive:(UIApplication *)application { 62 - (void)applicationDidBecomeActive:(UIApplication *)application {
  63 + NSLog(@"111applicationDidBecomeActive");
63 // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 64 // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
64 } 65 }
65 66
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveUserManager.m
@@ -81,6 +81,7 @@ @@ -81,6 +81,7 @@
81 stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""]; 81 stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""];
82 NSString *baseUrl = formalStatUrl; 82 NSString *baseUrl = formalStatUrl;
83 NSString *vvUrl = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1005_%@&eventid=1320&uri=&sid=%@&plat=i_%@&objid=",baseUrl,kSVer,[CNLiveUserSystemTools uidForStat:realTime],stamp,self.appId,SDKVersion, [CNLiveUserManager manager].userId ? [CNLiveUserManager manager].userId: @"",StatAppVersion]; 83 NSString *vvUrl = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1005_%@&eventid=1320&uri=&sid=%@&plat=i_%@&objid=",baseUrl,kSVer,[CNLiveUserSystemTools uidForStat:realTime],stamp,self.appId,SDKVersion, [CNLiveUserManager manager].userId ? [CNLiveUserManager manager].userId: @"",StatAppVersion];
  84 + NSLog(@"url start:\n%@",vvUrl);
84 [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:vvUrl]] delegate:nil]; 85 [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:vvUrl]] delegate:nil];
85 86
86 }]; 87 }];
@@ -101,6 +102,7 @@ @@ -101,6 +102,7 @@
101 102
102 103
103 NSString *vvUrl = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1005_%@&eventid=1321&uri=%@&sid=%@&plat=i_%@&objid=",baseUrl,kSVer,[CNLiveUserSystemTools uidForStat:realTime],stamp,self.appId,SDKVersion,endDate,[CNLiveUserManager manager].userId ? [CNLiveUserManager manager].userId: @"",StatAppVersion]; 104 NSString *vvUrl = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1005_%@&eventid=1321&uri=%@&sid=%@&plat=i_%@&objid=",baseUrl,kSVer,[CNLiveUserSystemTools uidForStat:realTime],stamp,self.appId,SDKVersion,endDate,[CNLiveUserManager manager].userId ? [CNLiveUserManager manager].userId: @"",StatAppVersion];
  105 + NSLog(@"url end:\n%@",vvUrl);
104 [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:vvUrl]] delegate:nil]; 106 [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:vvUrl]] delegate:nil];
105 }]; 107 }];
106 } 108 }
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveUserSystemTools.m
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 #import "CommonCrypto/CommonDigest.h" 11 #import "CommonCrypto/CommonDigest.h"
12 #import "Common.h" 12 #import "Common.h"
13 #import "CNLiveUserManager.h" 13 #import "CNLiveUserManager.h"
  14 +#import "NSString+Keychain.h"
14 15
15 #define testStatUrl @"http://app.sta.cnlive.com/app.jpg" 16 #define testStatUrl @"http://app.sta.cnlive.com/app.jpg"
16 #define formalStatUrl @"http://app.sta.cnlive.com/app.jpg" 17 #define formalStatUrl @"http://app.sta.cnlive.com/app.jpg"
@@ -25,23 +26,27 @@ @@ -25,23 +26,27 @@
25 26
26 NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults]; 27 NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
27 NSString *userKey = @"kCNLiveUserDefaultsUIDKey"; 28 NSString *userKey = @"kCNLiveUserDefaultsUIDKey";
  29 +// [NSString xw_deletes];
28 if ([defauts objectForKey:userKey]) { 30 if ([defauts objectForKey:userKey]) {
  31 + //老用户升级新版本后,没删App
29 uid = [[defauts objectForKey:userKey] copy]; 32 uid = [[defauts objectForKey:userKey] copy];
  33 + NSArray <NSString *>*arr = [uid componentsSeparatedByString:@"_"];
  34 + NSString *uuid = arr[0];
  35 + NSString *ts = arr[1];
  36 + [NSString xw_saveUUID:uuid TS:ts];
  37 + return uid;
  38 + }else if (XW_UUID_Exist){//老用户,删了App
  39 + uid = XW_UUID_Timestamp(dateStr);
  40 + [defauts setObject:uid forKey:userKey];
  41 + [defauts synchronize];
30 return uid; 42 return uid;
31 } 43 }
32 else { 44 else {
33 -  
34 - NSString *stamp = dateStr;  
35 - stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""];  
36 -  
37 - NSString *idfv = [[[[UIDevice currentDevice] identifierForVendor] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""];  
38 - uid = [NSString stringWithFormat:@"%@_%@", idfv, stamp];  
39 - 45 + uid = XW_UUID_Timestamp(dateStr);
40 [defauts setObject:uid forKey:userKey]; 46 [defauts setObject:uid forKey:userKey];
41 [defauts synchronize]; 47 [defauts synchronize];
  48 + return uid;
42 } 49 }
43 -  
44 - return uid;  
45 } 50 }
46 51
47 #pragma mark - 加密 52 #pragma mark - 加密
CNLiveUserSystemDemo/CNLiveUserSystemSDK/NSString+Keychain.h 0 → 100644
  1 +//
  2 +// NSString+Keychain.h
  3 +// XWTest
  4 +//
  5 +// Created by CNLive-zxw on 2019/7/8.
  6 +// Copyright © 2019 CNLive. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +// 获取UUID
  12 +#define XW_UUID [NSString xw_getUUIDInKeychain]
  13 +// 是否存在UUID
  14 +#define XW_UUID_Exist [NSString xw_existUUID]
  15 +
  16 +// 获取时间戳
  17 +#define XW_Timestamp [NSString xw_getTimestampInKeychain]
  18 +// 是否存在时间戳
  19 +#define XW_Timestamp_Exist [NSString xw_existTimestamp]
  20 +
  21 +// 获取UUID_时间戳 传入时间戳
  22 +#define XW_UUID_Timestamp(Timestamp) [Timestamp xw_getUUIDTimestampInKeychain]
  23 +
  24 +NS_ASSUME_NONNULL_BEGIN
  25 +
  26 +@interface NSString (Keychain)
  27 +
  28 +/**
  29 + * @abstract 获取设备UUID
  30 + *
  31 + * 本方法是得到 UUID 后存入系统中的 keychain 的方法
  32 + * 程序删除后重装,仍可以得到相同的唯一标示
  33 + * 但是当系统刷机后,系统中的钥匙串会被清空,此时本方法失效
  34 + *
  35 + * @return 返回UUID字符串对象
  36 + */
  37 ++ (NSString *)xw_getUUIDInKeychain;
  38 ++ (BOOL)xw_existUUID;
  39 +
  40 +
  41 +/**
  42 + * @abstract 获取时间戳
  43 + * 获取的时间戳就是第一次调用xw_getTimeInKeychain这个方法,此方法会把传入的时间戳存入系统中的 keychain
  44 + * 我们调用此方法获取时间戳的时候,如果有,则返回;如果没有,则返回当前时间戳
  45 + * 一定确保此方法在xw_getTimeInKeychain之后调用 *
  46 + *
  47 + * @return 返回时间戳字符串对象
  48 + */
  49 ++ (NSString *)xw_getTimestampInKeychain;
  50 ++ (BOOL)xw_existTimestamp;
  51 +
  52 +
  53 +/**
  54 + * @abstract 获取UUID和_和时间戳3个的拼接对象
  55 + *
  56 + * 本方法一定要使用时间戳字符串调用 *
  57 + * 本方法是得到 UUID_时间戳 后存入系统中的 keychain 的方法
  58 + * 程序删除后重装,仍可以得到相同的唯一标示
  59 + * 但是当系统刷机后,系统中的钥匙串会被清空,此时本方法失效
  60 + *
  61 + * @return 返回获取UUID和_和时间戳3个的拼接对象
  62 + */
  63 +- (NSString *)xw_getUUIDTimestampInKeychain;
  64 +
  65 +
  66 +//保存数据至钥匙串中
  67 ++ (void)xw_save:(NSString *)service data:(id)data;
  68 +
  69 +
  70 +//从钥匙串中加载数据
  71 ++ (id)xw_load:(NSString *)service;
  72 +
  73 +
  74 +//删除数据
  75 ++ (void)xw_delete:(NSString *)service;
  76 ++ (void)xw_deletes;
  77 +
  78 +/**
  79 + * 保存已有的UUID_TS到钥匙串
  80 + *
  81 + * @param UUID UUID的字符串
  82 + * @param TS TS的字符串
  83 + */
  84 ++ (void)xw_saveUUID:(NSString *)UUID TS:(NSString *)TS;
  85 +
  86 +@end
  87 +
  88 +NS_ASSUME_NONNULL_END
CNLiveUserSystemDemo/CNLiveUserSystemSDK/NSString+Keychain.m 0 → 100644
  1 +//
  2 +// NSString+Keychain.m
  3 +// XWTest
  4 +//
  5 +// Created by CNLive-zxw on 2019/7/8.
  6 +// Copyright © 2019 CNLive. All rights reserved.
  7 +//
  8 +
  9 +#import "NSString+Keychain.h"
  10 +#import <Security/Security.h>
  11 +
  12 +NSString * const KEY_UUID_INSTEAD = @"com.cnlive.CNLiveNetAdd.uuid";
  13 +NSString * const KEY_TIME_INSTEAD = @"com.cnlive.CNLiveNetAdd.time";
  14 +
  15 +@implementation NSString (Keychain)
  16 +/**
  17 +* 保存已有的UUID_TS到钥匙串
  18 +*
  19 +* @param UUID UUID的字符串
  20 +* @param TS TS的字符串
  21 +*/
  22 ++ (void)xw_saveUUID:(NSString *)UUID TS:(NSString *)TS {
  23 + if (!XW_UUID_Exist || !XW_Timestamp_Exist) {
  24 + [NSString xw_save:KEY_UUID_INSTEAD data:UUID];
  25 + [NSString xw_save:KEY_TIME_INSTEAD data:TS];
  26 + }
  27 +}
  28 +/**
  29 + * @abstract 获取设备UUID
  30 + *
  31 + * 本方法是得到 UUID 后存入系统中的 keychain 的方法
  32 + * 程序删除后重装,仍可以得到相同的唯一标示
  33 + * 但是当系统刷机后,系统中的钥匙串会被清空,此时本方法失效
  34 + *
  35 + * @return 返回UUID字符串对象
  36 + */
  37 ++ (NSString *)xw_getUUIDInKeychain {
  38 + NSString *getUDIDInKeychain = (NSString *)[NSString xw_load:KEY_UUID_INSTEAD];
  39 + NSLog(@"最终 ———— UUID %@",getUDIDInKeychain);
  40 + return getUDIDInKeychain;
  41 +
  42 +}
  43 +
  44 ++ (BOOL)xw_existUUID{
  45 + NSString *getUDIDInKeychain = (NSString *)[NSString xw_load:KEY_UUID_INSTEAD];
  46 + NSLog(@"从keychain中获取到的 UUID %@",getUDIDInKeychain);
  47 + if (!getUDIDInKeychain ||[getUDIDInKeychain isEqualToString:@""]||[getUDIDInKeychain isKindOfClass:[NSNull class]]) {
  48 + return NO;
  49 + }else{
  50 + return YES;
  51 +
  52 + }
  53 +
  54 +}
  55 +
  56 +/**
  57 + * @abstract 获取时间戳
  58 + * 获取的时间戳就是第一次调用xw_getTimeInKeychain这个方法,此方法会把传入的时间戳存入系统中的 keychain
  59 + * 我们调用此方法获取时间戳的时候,如果有,则返回;如果没有,则返回当前时间戳
  60 + * 一定确保此方法在xw_getTimeInKeychain之后调用 *
  61 + *
  62 + * @return 返回时间戳字符串对象
  63 + */
  64 ++ (NSString *)xw_getTimestampInKeychain {
  65 + NSString *getTimeInKeychain = (NSString *)[NSString xw_load:KEY_TIME_INSTEAD];
  66 + return getTimeInKeychain;
  67 +
  68 +}
  69 +
  70 ++ (BOOL)xw_existTimestamp{
  71 + NSString *getTimeInKeychain = (NSString *)[NSString xw_load:KEY_TIME_INSTEAD];
  72 + NSLog(@"从keychain中获取到的 UUID %@",getTimeInKeychain);
  73 + if (!getTimeInKeychain ||[getTimeInKeychain isEqualToString:@""]||[getTimeInKeychain isKindOfClass:[NSNull class]]) {
  74 + return NO;
  75 + }else{
  76 + return YES;
  77 +
  78 + }
  79 +
  80 +}
  81 +
  82 +
  83 +/**
  84 + * @abstract 获取UUID和_和时间戳3个的拼接对象
  85 + *
  86 + * 本方法一定要使用时间戳字符串调用 *
  87 + * 本方法是得到 UUID_时间戳 后存入系统中的 keychain 的方法
  88 + * 程序删除后重装,仍可以得到相同的唯一标示
  89 + * 但是当系统刷机后,系统中的钥匙串会被清空,此时本方法失效
  90 + *
  91 + * @return 返回获取UUID和_和时间戳3个的拼接对象
  92 + */
  93 +- (NSString *)xw_getUUIDTimestampInKeychain {
  94 + NSString *getUDIDInKeychain = (NSString *)[NSString xw_load:KEY_UUID_INSTEAD];
  95 + NSLog(@"从keychain中获取到的 UUID %@",getUDIDInKeychain);
  96 + if (!getUDIDInKeychain ||[getUDIDInKeychain isEqualToString:@""]||[getUDIDInKeychain isKindOfClass:[NSNull class]]) {
  97 + CFUUIDRef puuid = CFUUIDCreate( nil );
  98 + CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
  99 + NSString * idfv = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));
  100 + NSString *result = [idfv stringByReplacingOccurrencesOfString:@"-" withString:@""];
  101 +
  102 + CFRelease(puuid);
  103 + CFRelease(uuidString);
  104 + NSLog(@"\n \n \n _____重新存储 UUID_____\n \n \n %@",result);
  105 + [NSString xw_save:KEY_UUID_INSTEAD data:result];
  106 + getUDIDInKeychain = (NSString *)[NSString xw_load:KEY_UUID_INSTEAD];
  107 + }
  108 +
  109 + NSString *getTimeInKeychain = (NSString *)[NSString xw_load:KEY_TIME_INSTEAD];
  110 + if (!getTimeInKeychain ||[getTimeInKeychain isEqualToString:@""]||[getTimeInKeychain isKindOfClass:[NSNull class]]) {
  111 + [NSString xw_save:KEY_TIME_INSTEAD data:self];
  112 + getTimeInKeychain = (NSString *)[NSString xw_load:KEY_TIME_INSTEAD];
  113 + }
  114 +
  115 + NSString *string = [NSString stringWithFormat:@"%@_%@",getUDIDInKeychain,getTimeInKeychain];
  116 + NSLog(@"最终 ———— UUID_时间戳 %@",string);
  117 + return string;
  118 +
  119 +}
  120 +
  121 +
  122 +//保存数据至钥匙串中
  123 ++ (void)xw_save:(NSString *)service data:(id)data {
  124 + //Get search dictionary
  125 + NSMutableDictionary *keychainQuery = [self getKeychainQuery:service];
  126 + //Delete old item before add new item
  127 + SecItemDelete((CFDictionaryRef)keychainQuery);
  128 + //Add new object to search dictionary(Attention:the data format)
  129 + [keychainQuery setObject:[NSKeyedArchiver archivedDataWithRootObject:data] forKey:(id)kSecValueData];
  130 + //Add item to keychain with the search dictionary
  131 + SecItemAdd((CFDictionaryRef)keychainQuery, NULL);
  132 +
  133 +}
  134 +
  135 +
  136 +//从钥匙串中加载数据
  137 ++ (id)xw_load:(NSString *)service {
  138 + id ret = nil;
  139 + NSMutableDictionary *keychainQuery = [self getKeychainQuery:service];
  140 + //Configure the search setting
  141 + //Since in our simple case we are expecting only a single attribute to be returned (the password) we can set the attribute kSecReturnData to kCFBooleanTrue
  142 + [keychainQuery setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
  143 + [keychainQuery setObject:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit];
  144 + CFDataRef keyData = NULL;
  145 + if (SecItemCopyMatching((CFDictionaryRef)keychainQuery, (CFTypeRef *)&keyData) == noErr) {
  146 + @try {
  147 + ret = [NSKeyedUnarchiver unarchiveObjectWithData:(__bridge NSData *)keyData];
  148 + } @catch (NSException *e) {
  149 + NSLog(@"Unarchive of %@ failed: %@", service, e);
  150 + } @finally {
  151 + }
  152 + }
  153 + if (keyData)
  154 + CFRelease(keyData);
  155 + return ret;
  156 +
  157 +}
  158 +
  159 +
  160 +//删除数据
  161 ++ (void)xw_delete:(NSString *)service {
  162 + NSMutableDictionary *keychainQuery = [self getKeychainQuery:service];
  163 + SecItemDelete((CFDictionaryRef)keychainQuery);
  164 +
  165 +}
  166 +
  167 +
  168 +//通过 key 获取数据
  169 ++ (NSMutableDictionary *)getKeychainQuery:(NSString *)service {
  170 + return [NSMutableDictionary dictionaryWithObjectsAndKeys:
  171 + (id)kSecClassGenericPassword,(id)kSecClass,
  172 + service, (id)kSecAttrService,
  173 + service, (id)kSecAttrAccount,
  174 + (id)kSecAttrAccessibleAfterFirstUnlock,(id)kSecAttrAccessible,
  175 + nil];
  176 +}
  177 +
  178 ++ (void)xw_deletes{
  179 + [NSString xw_delete:KEY_UUID_INSTEAD];
  180 + [NSString xw_delete:KEY_TIME_INSTEAD];
  181 +
  182 +}
  183 +
  184 +@end
CNLiveUserSystemSDK.xcodeproj/project.pbxproj
@@ -33,6 +33,8 @@ @@ -33,6 +33,8 @@
33 8187351D1DA8F60100046D84 /* CNLiveVerificationCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 818735041DA8F60100046D84 /* CNLiveVerificationCode.m */; }; 33 8187351D1DA8F60100046D84 /* CNLiveVerificationCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 818735041DA8F60100046D84 /* CNLiveVerificationCode.m */; };
34 8187351E1DA8F60100046D84 /* NSDictionary+Safety.h in Headers */ = {isa = PBXBuildFile; fileRef = 818735051DA8F60100046D84 /* NSDictionary+Safety.h */; }; 34 8187351E1DA8F60100046D84 /* NSDictionary+Safety.h in Headers */ = {isa = PBXBuildFile; fileRef = 818735051DA8F60100046D84 /* NSDictionary+Safety.h */; };
35 8187351F1DA8F60100046D84 /* NSDictionary+Safety.m in Sources */ = {isa = PBXBuildFile; fileRef = 818735061DA8F60100046D84 /* NSDictionary+Safety.m */; }; 35 8187351F1DA8F60100046D84 /* NSDictionary+Safety.m in Sources */ = {isa = PBXBuildFile; fileRef = 818735061DA8F60100046D84 /* NSDictionary+Safety.m */; };
  36 + D23A472022D43E7B00A4B465 /* NSString+Keychain.h in Headers */ = {isa = PBXBuildFile; fileRef = D23A471E22D43E7A00A4B465 /* NSString+Keychain.h */; settings = {ATTRIBUTES = (Public, ); }; };
  37 + D23A472122D43E7B00A4B465 /* NSString+Keychain.m in Sources */ = {isa = PBXBuildFile; fileRef = D23A471F22D43E7B00A4B465 /* NSString+Keychain.m */; };
36 D2470C3A1EE65B2800C16A1F /* CNLiveEmailModifyPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = D2470C361EE65B2800C16A1F /* CNLiveEmailModifyPassword.m */; }; 38 D2470C3A1EE65B2800C16A1F /* CNLiveEmailModifyPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = D2470C361EE65B2800C16A1F /* CNLiveEmailModifyPassword.m */; };
37 D2470C3B1EE65B2800C16A1F /* CNLiveEmailModifyPassword.h in Headers */ = {isa = PBXBuildFile; fileRef = D2470C371EE65B2800C16A1F /* CNLiveEmailModifyPassword.h */; }; 39 D2470C3B1EE65B2800C16A1F /* CNLiveEmailModifyPassword.h in Headers */ = {isa = PBXBuildFile; fileRef = D2470C371EE65B2800C16A1F /* CNLiveEmailModifyPassword.h */; };
38 D2470C3C1EE65B2800C16A1F /* CNLiveCheckVerificationCode.m in Sources */ = {isa = PBXBuildFile; fileRef = D2470C381EE65B2800C16A1F /* CNLiveCheckVerificationCode.m */; }; 40 D2470C3C1EE65B2800C16A1F /* CNLiveCheckVerificationCode.m in Sources */ = {isa = PBXBuildFile; fileRef = D2470C381EE65B2800C16A1F /* CNLiveCheckVerificationCode.m */; };
@@ -68,6 +70,8 @@ @@ -68,6 +70,8 @@
68 818735041DA8F60100046D84 /* CNLiveVerificationCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveVerificationCode.m; sourceTree = "<group>"; }; 70 818735041DA8F60100046D84 /* CNLiveVerificationCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveVerificationCode.m; sourceTree = "<group>"; };
69 818735051DA8F60100046D84 /* NSDictionary+Safety.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Safety.h"; sourceTree = "<group>"; }; 71 818735051DA8F60100046D84 /* NSDictionary+Safety.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Safety.h"; sourceTree = "<group>"; };
70 818735061DA8F60100046D84 /* NSDictionary+Safety.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Safety.m"; sourceTree = "<group>"; }; 72 818735061DA8F60100046D84 /* NSDictionary+Safety.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Safety.m"; sourceTree = "<group>"; };
  73 + D23A471E22D43E7A00A4B465 /* NSString+Keychain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Keychain.h"; sourceTree = "<group>"; };
  74 + D23A471F22D43E7B00A4B465 /* NSString+Keychain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Keychain.m"; sourceTree = "<group>"; };
71 D2470C361EE65B2800C16A1F /* CNLiveEmailModifyPassword.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveEmailModifyPassword.m; sourceTree = "<group>"; }; 75 D2470C361EE65B2800C16A1F /* CNLiveEmailModifyPassword.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveEmailModifyPassword.m; sourceTree = "<group>"; };
72 D2470C371EE65B2800C16A1F /* CNLiveEmailModifyPassword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveEmailModifyPassword.h; sourceTree = "<group>"; }; 76 D2470C371EE65B2800C16A1F /* CNLiveEmailModifyPassword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveEmailModifyPassword.h; sourceTree = "<group>"; };
73 D2470C381EE65B2800C16A1F /* CNLiveCheckVerificationCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveCheckVerificationCode.m; sourceTree = "<group>"; }; 77 D2470C381EE65B2800C16A1F /* CNLiveCheckVerificationCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveCheckVerificationCode.m; sourceTree = "<group>"; };
@@ -126,6 +130,8 @@ @@ -126,6 +130,8 @@
126 818734F11DA8F60100046D84 /* CNLiveUserSystemSDK */ = { 130 818734F11DA8F60100046D84 /* CNLiveUserSystemSDK */ = {
127 isa = PBXGroup; 131 isa = PBXGroup;
128 children = ( 132 children = (
  133 + D23A471E22D43E7A00A4B465 /* NSString+Keychain.h */,
  134 + D23A471F22D43E7B00A4B465 /* NSString+Keychain.m */,
129 8131D9241DA9E55B00F03C91 /* Common.h */, 135 8131D9241DA9E55B00F03C91 /* Common.h */,
130 818734F21DA8F60100046D84 /* CNLiveFeedback.h */, 136 818734F21DA8F60100046D84 /* CNLiveFeedback.h */,
131 818734F31DA8F60100046D84 /* CNLiveFeedback.m */, 137 818734F31DA8F60100046D84 /* CNLiveFeedback.m */,
@@ -166,6 +172,7 @@ @@ -166,6 +172,7 @@
166 files = ( 172 files = (
167 D2470C3D1EE65B2800C16A1F /* CNLiveCheckVerificationCode.h in Headers */, 173 D2470C3D1EE65B2800C16A1F /* CNLiveCheckVerificationCode.h in Headers */,
168 8187351B1DA8F60100046D84 /* CNLiveUserSystemTypeDef.h in Headers */, 174 8187351B1DA8F60100046D84 /* CNLiveUserSystemTypeDef.h in Headers */,
  175 + D23A472022D43E7B00A4B465 /* NSString+Keychain.h in Headers */,
169 818735171DA8F60100046D84 /* CNLiveUserSystemCenter.h in Headers */, 176 818735171DA8F60100046D84 /* CNLiveUserSystemCenter.h in Headers */,
170 8187351C1DA8F60100046D84 /* CNLiveVerificationCode.h in Headers */, 177 8187351C1DA8F60100046D84 /* CNLiveVerificationCode.h in Headers */,
171 8187350F1DA8F60100046D84 /* CNLiveRegister.h in Headers */, 178 8187350F1DA8F60100046D84 /* CNLiveRegister.h in Headers */,
@@ -225,6 +232,7 @@ @@ -225,6 +232,7 @@
225 developmentRegion = English; 232 developmentRegion = English;
226 hasScannedForEncodings = 0; 233 hasScannedForEncodings = 0;
227 knownRegions = ( 234 knownRegions = (
  235 + English,
228 en, 236 en,
229 ); 237 );
230 mainGroup = 818734D71DA8F5B900046D84; 238 mainGroup = 818734D71DA8F5B900046D84;
@@ -278,6 +286,7 @@ @@ -278,6 +286,7 @@
278 D2470C3A1EE65B2800C16A1F /* CNLiveEmailModifyPassword.m in Sources */, 286 D2470C3A1EE65B2800C16A1F /* CNLiveEmailModifyPassword.m in Sources */,
279 811A0B101E7BBB3200B56CC9 /* CNLiveUserNetworkManager.m in Sources */, 287 811A0B101E7BBB3200B56CC9 /* CNLiveUserNetworkManager.m in Sources */,
280 8187350A1DA8F60100046D84 /* CNLiveURLRequestSerialization.m in Sources */, 288 8187350A1DA8F60100046D84 /* CNLiveURLRequestSerialization.m in Sources */,
  289 + D23A472122D43E7B00A4B465 /* NSString+Keychain.m in Sources */,
281 8187350E1DA8F60100046D84 /* CNLiveLogin.m in Sources */, 290 8187350E1DA8F60100046D84 /* CNLiveLogin.m in Sources */,
282 818735121DA8F60100046D84 /* CNLiveUploadIcon.m in Sources */, 291 818735121DA8F60100046D84 /* CNLiveUploadIcon.m in Sources */,
283 8187350C1DA8F60100046D84 /* CNLiveFeedback.m in Sources */, 292 8187350C1DA8F60100046D84 /* CNLiveFeedback.m in Sources */,
Products/CNLiveUserSystemSDK.framework/CNLiveUserSystemSDK deleted 100644 → 0
No preview for this file type
Products/CNLiveUserSystemSDK.framework/Headers/CNLiveUserSystemCenter.h deleted 100644 → 0
1 -//  
2 -// CNLiveUserSystemCenter.h  
3 -// CNLiveUserSystemDemo  
4 -//  
5 -// Created by iOS on 16/9/12.  
6 -// Copyright © 2016年 zhulin. All rights reserved.  
7 -//  
8 -  
9 -#import <Foundation/Foundation.h>  
10 -#import "CNLiveUserSystemTypeDef.h"  
11 -#import <UIKit/UIKit.h>  
12 -  
13 -@interface CNLiveUserSystemCenter : NSObject  
14 -  
15 -/**  
16 - @abstract 初始化  
17 - @param appId 注册成功获得应用ID  
18 - @param appKey 注册成功获得应用key  
19 - @param appSecret 注册成功获得应用secret  
20 - @param isTestEnvironment 测试环境开关  
21 - @warning 必传参数  
22 - 必须在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 方法中调用  
23 - */  
24 - + (void)setAppId:(NSString *)appId appKey:(NSString *)appKey appSecret:(NSString *)appSecret isTestEnvironment:(BOOL)isTestEnvironment;  
25 -  
26 -/**  
27 - 用户ID  
28 -  
29 - @param userId 用户ID  
30 - */  
31 -+ (void)setUserId:(NSString *)userId;  
32 -  
33 -/**  
34 - @abstract 初始化  
35 - @param appId 注册成功获得应用ID  
36 - @param appKey 注册成功获得应用key  
37 - @param appSecret 注册成功获得应用secret  
38 - @warning 必传参数  
39 - 必须在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 方法中调用  
40 - *此方法环境默认为正式环境,建议使用如下方法初始化.  
41 - + (void)setAppId:(NSString *)appId appKey:(NSString *)appKey appSecret:(NSString *)appSecret isTestEnvironment:(BOOL)isTestEnvironment;  
42 -  
43 - */  
44 -+ (void)setAppId:(NSString *)appId appKey:(NSString *)appKey appSecret:(NSString *)appSecret;  
45 -  
46 -/**  
47 - @abstract 注册  
48 - @param userName 邮箱或手机  
49 - @param password 密码  
50 - @param verificationCode 手机验证码(手机号注册时必填)  
51 - @param invitationCode 邀请码(非必填)  
52 - @param frmId 渠道ID(非必填)  
53 - @param success 成功回调  
54 - @param failure 失败回调  
55 - */  
56 -+ (void)registerWithUserName:(NSString *)userName password:(NSString *)password verificationCode:(NSString *)verificationCode invitationCode:(NSString *)invitationCode frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
57 -  
58 -  
59 -/**  
60 - @abstract 第三方登录  
61 - @param plat 第三方平台编号(如plat: 1:sina weibo 2:qq 3:weixin 4:renren 注:如qq登录,plat=@"2")  
62 - @param thirdPartyId 第三方用户ID  
63 - @param nickName 用户昵称  
64 - @param gender 性别,m:男、f:女、n:未知(非必填)  
65 - @param location 用户所在地(非必填)  
66 - @param faceUrl 头像,约100*100(非必填)  
67 - @param frmId 渠道ID(非必填)  
68 - @param success 成功回调  
69 - @param failure 失败回调  
70 - */  
71 -+ (void)thirdPartyLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
72 -  
73 -  
74 -/**  
75 - @abstract 快捷登录(旧)  
76 - @param userName 手机号  
77 - @param verificationCode 验证码  
78 - @param frmId 渠道ID(非必填)  
79 - @param success 成功回调  
80 - @param failure 失败回调  
81 - */  
82 -+ (void)shortcutLoginWithUserName:(NSString *)userName verificationCode:(NSString *)verificationCode frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
83 -  
84 -/**  
85 - @abstract 快捷登录(新)  
86 - @param userName 手机号  
87 - @param countryCode 手机号国家码  
88 - @param verificationCode 验证码  
89 - @param frmId 渠道ID(非必填)  
90 - @param success 成功回调  
91 - @param failure 失败回调  
92 - */+ (void)shortcutLoginWithUserName:(NSString *)userName countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode frmId:(NSString *)frmId success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure;  
93 -  
94 -/**  
95 - @abstract 登录  
96 - @param userName 手机号或邮箱  
97 - @param password 密码  
98 - @param frmId 渠道ID(非必填)  
99 - @param success 成功回调  
100 - @param failure 失败回调  
101 - */  
102 -+ (void)loginWithUserName:(NSString *)userName password:(NSString *)password frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
103 -  
104 -  
105 -/**  
106 - @abstract 发送验证码(旧)  
107 - @param mobile 手机号  
108 - @param type 发送验证码类型(详见VerificationCodeType)  
109 - @param success 成功回调  
110 - @param failure 失败回调  
111 - */  
112 -+ (void)verificationCodeType:(VerificationCodeType)type mobile:(NSString *)mobile success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
113 -  
114 -/**  
115 - @abstract 发送验证码(新)  
116 - @param type 发送验证码类型(详见VerificationCodeType)  
117 - @param mobile 手机号  
118 - @param countryCode 手机号国家码  
119 - @param success 成功回调  
120 - @param failure 失败回调  
121 - */  
122 -+ (void)verificationCodeType:(VerificationCodeType)type mobile:(NSString *)mobile countryCode:(NSString *)countryCode success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
123 -  
124 -  
125 -/**  
126 - @abstract 更新用户附加信息  
127 - @param uid 用户ID  
128 - @param extInfo 扩展信息(格式由对方自己组织,平台只负责存储和原样读取,NSString类型)  
129 - @param success 成功回调  
130 - @param failure 失败回调  
131 - */  
132 -+ (void)updateOtherInfoWithUid:(NSString *)uid extInfo:(NSString *)extInfo success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
133 -  
134 -  
135 -/**  
136 - @abstract 修改用户单项信息  
137 - @param type 修改类型(nickName-昵称,gender-性别,email-邮箱, location-联系方式(地址))  
138 - @param uid 用户ID  
139 - @param info 对应的信息(注gender对应f/m/n)  
140 - @param success 成功回调  
141 - @param failure 失败回调  
142 - */  
143 -+ (void)modifyUserInfoType:(UserInfoType)type uid:(NSString *)uid modifyInfo:(NSString *)info success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
144 -  
145 -  
146 -/**  
147 - @abstract 更新手机号(旧)  
148 - @param uid 用户ID  
149 - @param mobile 手机号  
150 - @param verificationCode 验证码  
151 - @param success 成功回调  
152 - @param failure 失败回调  
153 - */  
154 -+ (void)updateMobileWithUid:(NSString *)uid mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
155 -  
156 -/**  
157 - @abstract 更新手机号(新)  
158 - @param uid 用户ID  
159 - @param mobile 手机号  
160 - @param countryCode 手机号国家码  
161 - @param verificationCode 验证码  
162 - @param success 成功回调  
163 - @param failure 失败回调  
164 - */  
165 -+(void)updateMobileWithUid:(NSString *)uid mobile:(NSString *)mobile countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure;  
166 -  
167 -/**  
168 - @abstract 绑定第三方账号  
169 - @param uid 用户ID  
170 - @param plat 第三方平台编号(如platform: 1:sina weibo 2:qq 3:weixin 4:renren 注:如绑定qq,thirdPartyPlat = @"2")  
171 - @param thirdPartyId 第三方用户ID  
172 - @param success 成功回调  
173 - @param failure 失败回调  
174 - */  
175 -+ (void)bindingThirdPartyWithUid:(NSString *)uid thirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
176 -  
177 -  
178 -/**  
179 - @abstract 修改密码(通过手机号修改)  
180 - @param mobile 手机号  
181 - @param verificationCode 验证码  
182 - @param newPassword 新密码  
183 - @param success 成功回调  
184 - @param failure 失败回调  
185 - */  
186 -+ (void)changePasswordWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode newPassword:(NSString *)newPassword success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
187 -  
188 -  
189 -/**  
190 - @abstract 上传头像  
191 - @param uid 用户ID  
192 - @param icon 头像 (图片质量 0.5)  
193 - @param success 成功回调  
194 - @param failure 失败回调  
195 - */  
196 -+ (void)uploadIconWithUid:(NSString *)uid icon:(UIImage *)icon success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
197 -  
198 -/**  
199 - @abstract 上传头像 新增  
200 - @param uid 用户ID  
201 - @param compressionQuality 头像质量 0-1 Default 0.5  
202 - @param icon 头像  
203 - @param success 成功回调  
204 - @param failure 失败回调  
205 -  
206 - */  
207 -+ (void)uploadIconWithUid:(NSString *)uid icon:(UIImage *)icon compressionQuality:(CGFloat)compressionQuality success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure;  
208 -  
209 -/**  
210 - @abstract 查询用户信息  
211 - @param uid 用户ID  
212 - @param srcUid 被查询用户ID  
213 - @param success 成功回调  
214 - @param failure 失败回调  
215 - */  
216 -+ (void)queryUserInfoWithUid:(NSString *)uid srcUid:(NSString *)srcUid success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
217 -  
218 -  
219 -/**  
220 - @abstract 查询多条用户信息  
221 - @param uid 用户ID  
222 - @param srcUids 被查询用户IDs  
223 - @param success 成功回调  
224 - @param failure 失败回调  
225 - */  
226 -+ (void)queryMoreUserInfosWithUid:(NSString *)uid srcUids:(NSArray *)srcUids success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
227 -  
228 -  
229 -/**  
230 - @abstract 用户反馈  
231 - @param contentId 举报内容ID  
232 - @param message 举报内容(app自己组织-不能带特殊字符&号等)  
233 - @param success 成功回调  
234 - @param failure 失败回调  
235 - */  
236 -+ (void)feedbackWithContentId:(NSString *)contentId message:(NSString *)message success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
237 -  
238 -  
239 -/**  
240 - 通过邮箱修改密码  
241 -  
242 - @param email 邮箱  
243 - @param newPwd 新密码  
244 - @param success 成功回调  
245 - @param failure 失败回调  
246 - */  
247 -+ (void)modifyPwdWithEmail:(NSString *)email newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure;  
248 -  
249 -  
250 -/**  
251 - 通过原密码修改密码  
252 -  
253 - @param uid 用户ID  
254 - @param pwd 原密码  
255 - @param newPwd 新密码  
256 - @param success 成功回调  
257 - @param failure 失败回调  
258 - */  
259 -+ (void)oldPwdChangePasswordWithUid:(NSString *)uid pwd:(NSString *)pwd newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure;  
260 -  
261 -  
262 -/**  
263 - 注册前校验手机验证码(旧)  
264 -  
265 - @param mobile 手机号  
266 - @param verificationCode 验证码  
267 - @param success 成功回调  
268 - @param failure 失败回调  
269 - */  
270 -+ (void)registerCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure;  
271 -  
272 -/**  
273 - 注册前校验手机验证码(新)  
274 -  
275 - @param mobile 手机号  
276 - @param countryCode 手机号国家码  
277 - @param verificationCode 验证码  
278 - @param success 成功回调  
279 - @param failure 失败回调  
280 - */  
281 -+ (void)registerCheckVerificationCodeWithMobile:(NSString *)mobile countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure;  
282 -  
283 -/**  
284 - 快捷登录前校验手机验证码(旧)  
285 -  
286 - @param mobile 手机号  
287 - @param verificationCode 验证码  
288 - @param success 成功回调  
289 - @param failure 失败回调  
290 - */  
291 -+ (void)shortcutLoginCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure;  
292 -  
293 -/**  
294 - 快捷登录前校验手机验证码(新)  
295 -  
296 - @param mobile 手机号  
297 - @param countryCode 手机号国家码  
298 - @param success 成功回调  
299 - @param failure 失败回调  
300 - */  
301 -+ (void)shortcutLoginCheckVerificationCodeWithMobile:(NSString *)mobile countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure;  
302 -  
303 -/**  
304 - 验证第三方账号是否注册,若注册则直接登录返回用户信息,若未注册返回errorCode  
305 -  
306 - @param plat 第三方平台编号(如plat: 1:sina weibo 2:qq 3:weixin 4:renren 注:如qq登录,plat=@"2")  
307 - @param thirdPartyId 第三方用户ID  
308 - @param frmId 渠道ID(非必填)  
309 - @param success 成功回调  
310 - @param failure 失败回调  
311 - */  
312 -+ (void)thirdPartyCheckLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure;  
313 -  
314 -  
315 -/**  
316 - 第三方注册强制绑定手机号登录: 手机号+密码+验证码+三方账号  
317 -  
318 - @param plat 第三方平台编号(如plat: 1:sina weibo 2:qq 3:weixin 4:renren 注:如qq登录,plat=@"2")  
319 - @param thirdPartyId 第三方用户ID  
320 - @param nickName 用户昵称  
321 - @param gender 性别,m:男、f:女、n:未知(非必填)  
322 - @param location 用户所在地(非必填)  
323 - @param faceUrl 头像,约100*100(非必填)  
324 - @param mobile 手机号  
325 - @param verificationCode 验证码 (验证码类型为快捷登录VerificationCodeTypeShortcutLogin)  
326 - @param pawd 注册密码  
327 - @param frmId 渠道ID(非必填)  
328 - @param success 成功回调  
329 - @param failure 失败回调  
330 - */  
331 -+ (void)thirdPartyBindMobileLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode pawd:(NSString *)pawd frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;  
332 -  
333 -  
334 -/**  
335 - * 获取SDK版本号 v2.1.0  
336 - */  
337 -+ (NSString *)getVersion;  
338 -  
339 -  
340 -  
341 -@end  
Products/CNLiveUserSystemSDK.framework/Headers/CNLiveUserSystemTypeDef.h deleted 100644 → 0
1 -//  
2 -// CNLiveUserSystemTypeDef.h  
3 -// CNLiveUserSystemDemo  
4 -//  
5 -// Created by iOS on 16/9/12.  
6 -// Copyright © 2016年 zhulin. All rights reserved.  
7 -//  
8 -  
9 -#ifndef CNLiveUserSystemTypeDef_h  
10 -#define CNLiveUserSystemTypeDef_h  
11 -  
12 -//获取验证码  
13 -typedef NS_ENUM(NSUInteger, VerificationCodeType) {  
14 - VerificationCodeTypeShortcutLogin = 0, //快捷登录  
15 - VerificationCodeTypeRegister, //注册或修改手机号  
16 - VerificationCodeTypeRetrievePassword //找回或修改密码  
17 -};  
18 -  
19 -//修改单项用户信息类型  
20 -typedef NS_ENUM(NSUInteger, UserInfoType) {  
21 - UserInfoTypeNickName = 0, //昵称  
22 - UserInfoTypeGender, //性别(f/m/n)  
23 - UserInfoTypeEmail, //邮箱  
24 - UserInfoTypeLocation, //联系方式(地址)  
25 -};  
26 -  
27 -//校验验证码  
28 -typedef NS_ENUM(NSInteger, CheckVerificationCodeType) {  
29 - CheckVerificationCodeTypeRegister = 0,//注册前校验验证码  
30 - CheckVerificationCodeTypeShortcutLogin //快捷登录前校验验证码  
31 -};  
32 -  
33 -#endif /* CNLiveUserSystemTypeDef_h */  
Products/CNLiveUserSystemSDK.framework/Info.plist deleted 100644 → 0
No preview for this file type