CNLiveUserSystemTools.m
4.51 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
//
// 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"
@implementation CNLiveUserSystemTools
#pragma mark - uuid
+ (NSString *)uidForStat:(NSDate *)date
{
NSString *uid = @"";
NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults];
if ([defauts objectForKey:@"kCNLiveUserDefaultsUIDKey"]) {
uid = [[defauts objectForKey:@"kCNLiveUserDefaultsUIDKey"] copy];
return uid;
} else {
NSString *stamp = [NSString stringWithFormat:@"%.3f", [date timeIntervalSince1970]];
stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""];
NSString *idfv = [[[[UIDevice currentDevice] identifierForVendor] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""];
uid = [NSString stringWithFormat:@"%@_%@", idfv, stamp];
[defauts setObject:uid forKey:@"kCNLiveUserDefaultsUIDKey"];
[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, 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];
NSDate *date = [NSDate date];
NSString *stamp = [NSString stringWithFormat:@"%.3f", [date timeIntervalSince1970]];
stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""];
NSString *vvUrl = [NSString stringWithFormat:@"http://app.sta.cnlive.com/app.js?sver=%@&uid=%@&tm=%@&from=&spid=&appid=%@&version=1005_%@&eventid=1000&uri=%@&sid=%@&plat=i&objid=_", kSVer, [self uidForStat:date], stamp, [CNLiveUserManager manager].appId, SDKVersion, errorString,[self getSid]];
[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 @"";
}
@end