CNLiveUserSystemTools.m 4.53 KB
//
//  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],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 @"";
}
@end