IOSFunction

来源:互联网 发布:二分法求根c语言程序 编辑:程序博客网 时间:2024/06/02 00:14

IOSFunction.h

#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>@interface IOSFunction : NSObject#pragma mark - 获取参数/** *  @brief  获取唯一标示 * *  @return 一个字符串,该字符串是由代码获取cfuuid唯一随机字符串, 然后把给字符串保存在共有的keychain中,保证唯一性的唯一识别字符串。 样例:328DCE39-C501-4195-B2CC-E2CEB069FAB0 */+(NSString *)getUUID;/** *  @brief  获取当前iOS操作系统的版本号 * *  @return 字符串形式返回当前系统的版本号,样例:“7.0” */+(NSString *)getSystemVersion;/** *  @brief  获取设备类型 * *  @return 设备类型的字符串:样例:"iPod_touch_5" */+(NSString *)getDeviceType;/** *  @brief  获取当前设备的mac地址 iOS7以下有效,iOS7以上也能使用,但是值都是一样的。 * *  @return 返回设备的mac地址,样例:"70:11:24:4B:2B:5C" */+(NSString *)getMacaddress;/** *  @brief  获取设备的广告标示,通过设置,可以修改的一个标记,一般情况下不会变动。 可以跨应用,跨开发者访问。调用 ADSupport框架。只支持iOS6.0以上版本。 * *  @return 一串广告标示字符串,样例:“B9031A0C-0E66-40EE-ACA4-3CCB30DB9F49” */+(NSString *)getIdfa;/** *  @brief  获取项目配置文件的配置信息 * *  @return 字典Info.plist的内容 */+(NSDictionary *)getProjectInfoPlist;#pragma mark - 常用基本方法/** *  @brief  MD5加密方法 * *  @param  beforeMD5String     加密前的MD5字符串 * *  @return 加密以后的MD5字符串 */+(NSString *)getMD5StrFromString:(NSString *)beforeMD5String;/** *  @brief  64位编码 * *  @param  input   64编码前的数据 *  @param  length  64位编码前的数据长度 * *  @return 64位编码以后的字符串。 */+(NSString *)encode:(const uint8_t *)input length:(NSInteger)length;/** *  @brief  进行URL转码的方法 * *  @param  aString     需要进行URL转吗的字符串 * *  @return URL转码以后的字符串 */+(NSString *)urlEcodingFromString:(NSString *)aString;@end

IOSFunction.m

#import "IOSFunction.h"#import <SystemConfiguration/SystemConfiguration.h>#import "netdb.h"#import <CommonCrypto/CommonCrypto.h>#import <AdSupport/AdSupport.h>//idfa用的类库#import <sys/socket.h>#import <sys/sysctl.h>#import <net/if.h>#import <net/if_dl.h>@implementation IOSFunction#pragma mark - 获取EFUNCfUUID+(NSString *)getUUID{    CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);    NSString *cfuuidString =    (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));    return cfuuidString;}#pragma mark - 获取时间戳+(NSString *)getTimeStamp{    double secondTime=[[[[NSDate alloc]init] autorelease]timeIntervalSince1970];    double millisecondTime=secondTime*1000;    NSString * millisecondTimeStr=[NSString stringWithFormat:@"%f",millisecondTime];    NSRange pointRange=[millisecondTimeStr rangeOfString:@"."];    NSString * MSTime=[millisecondTimeStr substringToIndex:pointRange.location];    return MSTime;}#pragma mark - 获取当前iOS操作系统版本号+(NSString *)getSystemVersion{    NSString * systemversion=[[UIDevice currentDevice] systemVersion];    return systemversion;}#pragma mark - 获取当前设备类型+(NSString *)getDeviceVersion{    size_t size;    sysctlbyname("hw.machine", NULL, &size, NULL, 0);    char *machine = (char *)malloc(size);    sysctlbyname("hw.machine", machine, &size, NULL, 0);    NSString *deviceType = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];    free(machine);    return deviceType;}+(NSString *)getDeviceType{    NSString *deviceType = [self getDeviceVersion];    //iPhone    if ([deviceType isEqualToString:@"iPhone1,1"])    {        deviceType = @"iPhone";    }    else if ([deviceType isEqualToString:@"iPhone1,2"])    {        deviceType = @"iPhone_3G";    }    else if ([deviceType isEqualToString:@"iPhone2,1"])    {        deviceType = @"iPhone_3GS";    }    else if ([deviceType isEqualToString:@"iPhone3,1"])    {        deviceType = @"iPhone_4";    }    else if ([deviceType isEqualToString:@"iPhone4,1"])    {        deviceType = @"iPhone_4S";    }    else if ([deviceType isEqualToString:@"iPhone5,1"])    {        deviceType = @"iPhone_5";    }    else if ([deviceType isEqualToString:@"iPod4,1"])    {        deviceType = @"iPod_touch_4";    }    else if ([deviceType isEqualToString:@"iPad3,2"])    {        deviceType = @"iPad_3_3G";    }    else if ([deviceType isEqualToString:@"iPad3,1"])    {        deviceType = @"iPad_3_WiFi";    }    else if ([deviceType isEqualToString:@"iPad2,2"])    {        deviceType = @"iPad_2_3G";    }    else if ([deviceType isEqualToString:@"iPad2,1"])    {        deviceType = @"iPad_2_WiFi";    }    else if ([deviceType isEqualToString:@"iPod5,1"])    {        deviceType = @"iPod_touch_5";    }    else if ([deviceType isEqualToString:@"iPad2,5"])    {        deviceType = @"iPod_Mini";    }    return deviceType;}#pragma mark - 获取MAC地址+(NSString *)getMacaddress{    int                    mib[6];    size_t                len;    char                *buf;    unsigned char        *ptr;    struct if_msghdr    *ifm;    struct sockaddr_dl    *sdl;    mib[0] = CTL_NET;    mib[1] = AF_ROUTE;    mib[2] = 0;    mib[3] = AF_LINK;    mib[4] = NET_RT_IFLIST;    if ((mib[5] = if_nametoindex("en0")) == 0)    {        printf("Error: if_nametoindex error/n");        return NULL;    }    if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0)    {        printf("Error: sysctl, take 1/n");        return NULL;    }    if ((buf = malloc(len)) == NULL)    {        printf("Could not allocate memory. error!/n");        return NULL;    }    if (sysctl(mib, 6, buf, &len, NULL, 0) < 0)    {        printf("Error: sysctl, take 2");        return NULL;    }    ifm = (struct if_msghdr *)buf;    sdl = (struct sockaddr_dl *)(ifm + 1);    ptr = (unsigned char *)LLADDR(sdl);    NSString *outstring = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x",                           *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];    //  NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x",    //                           *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];    free(buf);    return [outstring uppercaseString];}#pragma mark - 获取IDFA+(NSString *)getIdfa{    NSString *idfaStr = nil;    if ([[self getSystemVersion] intValue] >= 6)    {        idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];    }    else    {        idfaStr = @"";    }    return idfaStr;}#pragma mark - 判断当前网络状态,是否联网+(BOOL)connectedToNetWork{    struct sockaddr_in zeroAddress;    bzero(&zeroAddress, sizeof(zeroAddress));    zeroAddress.sin_len = sizeof(zeroAddress);    zeroAddress.sin_family = AF_INET;    SCNetworkReachabilityRef defaultRouteReachability =    SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);    SCNetworkReachabilityFlags flags;    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);    CFRelease(defaultRouteReachability);    if (!didRetrieveFlags)    {        printf("Error.Count not recover network reachability flags\n");        return NO;    }    BOOL isReachable = flags & kSCNetworkFlagsReachable;    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;    return (isReachable && !needsConnection) ? YES : NO;}#pragma mark - 获取项目配置信息+(NSDictionary *)getProjectInfoPlist{    return [[NSBundle mainBundle]infoDictionary];}#pragma mark - - - - - - - - - -#pragma mark - 进行md5加密+(NSString *)getMD5StrFromString:(NSString *)beforeMD5String{    const char * cString = [beforeMD5String UTF8String];    unsigned char result[16];    CC_MD5(cString, (CC_LONG)strlen((const char *)cString), result);    NSString *sign= [NSString stringWithFormat:                     @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",                     result[0], result[1], result[2], result[3],                     result[4], result[5], result[6], result[7],                     result[8], result[9], result[10], result[11],                     result[12], result[13], result[14], result[15]                     ];    return [sign uppercaseString];}#pragma mark - 进行base64位转吗+(NSString *)encode:(const uint8_t *)input length:(NSInteger)length{    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";    NSMutableData *data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];    uint8_t *output = (uint8_t *)data.mutableBytes;    for (NSInteger i = 0; i < length; i += 3)    {        NSInteger value = 0;        for (NSInteger j = i; j < (i + 3); j++)        {            value <<= 8;            if (j < length)            {                value |= (0xFF & input[j]);            }        }        NSInteger index = (i / 3) * 4;        output[index + 0] =                    table[(value >> 18) & 0x3F];        output[index + 1] =                    table[(value >> 12) & 0x3F];        output[index + 2] = (i + 1) < length ? table[(value >> 6)  & 0x3F] : '=';        output[index + 3] = (i + 2) < length ? table[(value >> 0)  & 0x3F] : '=';    }    return [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];}#pragma mark - URL转码+(NSString *)urlEcodingFromString:(NSString *)aString{    NSString *result =    (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,                                                        (CFStringRef)aString,                                                        NULL,                                                        (CFStringRef)@";/?:@&=$+{}<>,",                                                        kCFStringEncodingUTF8);    return result;}@end
0 0
原创粉丝点击