CNLiveUserSystemTools.m
5.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
//
// CNLiveUserSystemTools.m
// CNLiveUserSystemDemo
//
// Created by iOS on 16/9/13.
// Copyright © 2016年 zhulin. All rights reserved.
//
#import "CNLiveUserSystemTools.h"
#import <UIKit/UIKit.h>
#import "CommonCrypto/CommonDigest.h"
#import "Common.h"
#import "CNLiveUserManager.h"
#import "NSString+Keychain.h"
#define testStatUrl @"http://app.sta.cnlive.com/app.jpg"
#define formalStatUrl @"http://app.sta.cnlive.com/app.jpg"
@implementation CNLiveUserSystemTools
#pragma mark - uuid
+ (nullable NSString *)uidForStat:(NSString *)dateStr{
NSString *uid = @"";
NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
NSString *userKey = @"kCNLiveUserDefaultsUIDKey";
// [NSString xw_deletes];
if ([defauts objectForKey:userKey]) {
//老用户升级新版本后,没删App
uid = [[defauts objectForKey:userKey] copy];
NSArray <NSString *>*arr = [uid componentsSeparatedByString:@"_"];
NSString *uuid = arr[0];
NSString *ts = arr[1];
[NSString xw_saveUUID:uuid TS:ts];
return uid;
}else if (XW_UUID_Exist){//老用户,删了App
uid = XW_UUID_Timestamp(dateStr);
[defauts setObject:uid forKey:userKey];
[defauts synchronize];
return uid;
}
else {
uid = XW_UUID_Timestamp(dateStr);
[defauts setObject:uid forKey:userKey];
[defauts synchronize];
return uid;
}
}
#pragma mark - 加密
+ (NSString *)sha1:(NSString *)string
{
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, (int)data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
while ([[output substringToIndex:1] isEqualToString:@"0"]) {
output = [[NSMutableString alloc] initWithString:[output substringFromIndex:1]];
}
return output;
}
+ (NSString *)signvalue:(NSDictionary*)parameter
{
//对所有传入参数按照字段名的 ASCII 码从小到大排序
NSArray *keyArr=[parameter allKeys];
NSArray *arr = [keyArr sortedArrayUsingSelector:@selector(compare:)];
NSMutableString *string1 = [[NSMutableString alloc]init];
for (int i=0; i<arr.count; i++) {
NSString *parameterString = [NSString stringWithFormat:@"%@",parameter[[arr objectAtIndex:i]]];
if (parameterString.length > 0) {
[string1 appendString:[NSString stringWithFormat:@"%@=%@&",[arr objectAtIndex:i],parameter[[arr objectAtIndex:i]]]];
}
}
if (string1.length > 0) {
[string1 deleteCharactersInRange:NSMakeRange(string1.length-1, 1)];
}
return string1;
}
//null处理
+ (NSString *)verify:(NSString *)string
{
NSString *newString;
if ([string isKindOfClass:[NSNumber class]]) {
newString = [NSString stringWithFormat:@"%@",string];
} else {
newString = string;
}
if ([newString isKindOfClass:[NSString class]] || newString.length > 0) {
return string;
} else {
return @"";
}
}
+ (void)errorStat:(NSString *)errorString
{
errorString = [self urlEncodeUsingEncodingString:errorString];
[CNLiveUserSystemTools getRealTimeString:^(NSString * _Nullable realTime, NSDate * _Nullable netDate) {
NSString *stamp = realTime;
stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""];
NSString *baseUrl = self.isTestEnvironment ? formalStatUrl : testStatUrl;
NSString *vvUrl = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=%@&spid=&appid=%@&version=1005_%@&eventid=1000&uri=%@&sid=%@&plat=i_%@&objid=_",baseUrl,kSVer, [self uidForStat:realTime], stamp,[CNLiveUserManager manager].fromID?[CNLiveUserManager manager].fromID: @"apple", [CNLiveUserManager manager].appId, SDKVersion, errorString,[self getSid],StatAppVersion];
[NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:vvUrl]] delegate:nil];
}];
}
+ (NSString *)urlEncodeUsingEncodingString:(NSString *)string {
return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef)string,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
}
+ (NSString *)getSid
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults objectForKey:@"CNLiveUserSid"]) {
return [userDefaults objectForKey:@"CNLiveUserSid"];
}
return @"";
}
+ (void)getRealTimeString:(void (^_Nullable)(NSString * __nullable realTime,NSDate * _Nullable netDate))realTime
{
NSInteger time = [[NSDate date] timeIntervalSince1970];
NSString *timeString = [NSString stringWithFormat:@"%ld", (long)time];
realTime(timeString,[NSDate date]);
}
+ (BOOL)isTestEnvironment
{
return [CNLiveUserManager manager].isTestEnvironment;
}
@end