umeng 渠道統計ios

來源:互聯網
上載者:User

標籤:

1、 使用前提:需要在工程中添加依賴架構:AdSupport.framework 和 Security.framework

2、在AppDelegate.m檔案中的-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中調用以下代碼, 傳入Appkey。

OpenUDID.h可從https://github.com/ylechelle/OpenUDID下載。

 

#import <AdSupport/ASIdentifierManager.h>#include <sys/sysctl.h>#include <sys/socket.h>#include <net/if.h>#include <net/if_dl.h>#import "OpenUDID.h"  +(void)requestTrackWithAppkey:(NSString *)appkey{    if (!appkey || ![appkey length])    {        return;    }       ASIdentifierManager *asIM = [[ASIdentifierManager alloc] init];    NSString *idfa = [asIM.advertisingIdentifier UUIDString];    NSString *idfv = [[UIDevice currentDevice].identifierForVendor UUIDString];    NSString *openudid = [OpenUDID value];    NSString *mac = [self macString];   // NSString *utdid = [UTDevice utdid];       size_t size;    // Set ‘oldp‘ parameter to NULL to get the size of the data    // returned so we can allocate appropriate amount of space    sysctlbyname("hw.machine", NULL, &size, NULL, 0);    // Allocate the space to store name    char *name = malloc(size);    // Get the platform name    sysctlbyname("hw.machine", name, &size, NULL, 0);    // Place name into a string    NSString *machine = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];    // Done with this    free(name);    machine=(NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,                                                                                 (CFStringRef)machine,                                                                                 NULL,                                                                                 (CFStringRef)@"!*‘();:@&=+$,/?%#[]",                                                                                 kCFStringEncodingUTF8));    mac=(NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,                                                                                   (CFStringRef)mac,                                                                                   NULL,                                                                                   (CFStringRef)@"!*‘();:@&=+$,/?%#[]",                                                                                   kCFStringEncodingUTF8));    NSString *requestURL = [[NSString alloc] initWithFormat:@"https://ar.umeng.com/stat.htm?ak=%@&device_name=%@&idfa=%@&openudid=%@&idfv=%@&mac=%@",appkey,machine,idfa,openudid,idfv,mac];       NSError *error = nil;    NSHTTPURLResponse *response = nil;    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL]];    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];    if (responseData)    {        //       // NSLog(@"ok");    }   }  + (NSString * )macString{    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");        free(buf);        return NULL;    }       ifm = (struct if_msghdr *)buf;    sdl = (struct sockaddr_dl *)(ifm + 1);    ptr = (unsigned char *)LLADDR(sdl);    NSString *macString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",                           *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];    free(buf);       return macString;}

 

umeng 渠道統計ios

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.