Umeng Channel stats iOS
Last Update:2016-08-22
Source: Internet
Author: User
<span id="Label3"></p><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.1"><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.1"><span data-reactid=".0.0.2.0.0.1.0.2.0.0.1.0">1, use premise: need to add the dependent framework in the Project:<span class="code" data-reactid=".0.0.2.0.0.1.0.2.0.0.1.1">adsupport.framework<span data-reactid=".0.0.2.0.0.1.0.2.0.0.1.2"> and <span class="code" data-reactid=".0.0.2.0.0.1.0.2.0.0.1.3">security.framework</span> </span> </span></span></p></p><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.2"><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.2"><span data-reactid=".0.0.2.0.0.1.0.2.0.0.2.0">2. <span data-reactid=".0.0.2.0.0.1.0.2.0.0.2.1">in the <span class="code" data-reactid=".0.0.2.0.0.1.0.2.0.0.2.2">appdelegate.m <span data-reactid=".0.0.2.0.0.1.0.2.0.0.2.3">file <span class="code" data-reactid=".0.0.2.0.0.1.0.2.0.0.2.4">-(BOOL) application: (uiapplication *) Application Didfinishlaunchingwithoptions: (nsdictionary *) The Launchoptions <span data-reactid=".0.0.2.0.0.1.0.2.0.0.2.5">method calls the following code, passing in the Appkey. </span></span></span></span></span></span></p></p><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.3"><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.3"><span class="code" data-reactid=".0.0.2.0.0.1.0.2.0.0.3.0">OpenUDID.h <span data-reactid=".0.0.2.0.0.1.0.2.0.0.3.1">can be <span data-reactid=".0.0.2.0.0.1.0.2.0.0.3.2">downloaded from Https://github.com/ylechelle/OpenUDID <span data-reactid=".0.0.2.0.0.1.0.2.0.0.3.3">. </span></span></span></span></p></p><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.3"><p class="m-row" data-reactid=".0.0.2.0.0.1.0.2.0.0.3"></p></p><pre>#import <AdSupport/ASIdentifierManager.h><span style="color: #000000;"><span style="color: #000000;">#include</span></span><sys/sysctl.h><span style="color: #000000;"><span style="color: #000000;">#include</span></span><sys/socket.h><span style="color: #000000;"><span style="color: #000000;">#include</span></span><net/<span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>.h><span style="color: #000000;"><span style="color: #000000;">#include</span></span><net/if_dl.h><span style="color: #000000;"><span style="color: #000000;">#import</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">OpenUDID.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>+(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>) requesttrackwithappkey: (nsstring *<span style="color: #000000;"><span style="color: #000000;">) appkey{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(!appkey | |!<span style="color: #000000;"><span style="color: #000000;">[appkey Length]) { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">; } Asidentifiermanager</span></span>*asim =<span style="color: #000000;"><span style="color: #000000;">[[asidentifiermanager alloc] init]; NSString</span></span>*IDFA =<span style="color: #000000;"><span style="color: #000000;">[asim.advertisingidentifier uuidstring]; NSString</span></span>*IDFV =<span style="color: #000000;"><span style="color: #000000;">[[uidevice Currentdevice].identifierforvendor uuidstring]; NSString</span></span>*openudid =<span style="color: #000000;"><span style="color: #000000;">[openudid value]; NSString</span></span>*mac =<span style="color: #000000;"><span style="color: #000000;">[self macstring]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">nsstring *utdid = [utdevice utdid];</span></span><span style="color: #000000;"><span style="color: #000000;">size_t size; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Set ' oldp ' parameter to NULL to get the size</span> of the data</span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">returned so we can allocate appropriate amount of space</span></span>Sysctlbyname (<span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">Hw.machine</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, null, &size, null,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Allocate the space to store name</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*name =<span style="color: #000000;"><span style="color: #000000;">malloc (size); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Get the platform name</span></span>Sysctlbyname (<span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">Hw.machine</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, name, &size, NULL,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">place <span style="color: #008000;">name into a string</span></span>NSString *machine =<span style="color: #000000;"><span style="color: #000000;">[nsstring Stringwithcstring:name encoding:nsutf8stringencoding]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;"></span> done with this</span><span style="color: #000000;">free <span style="color: #000000;">(name); </span>machine</span>= (nsstring *<span style="color: #000000;"><span style="color: #000000;">) cfbridgingrelease (cfurlcreatestringbyaddingpercentescapes (kcfallocatordefault, (cfstringref) machine, NULL, (cfstringref) /c5></span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">!* ' ();: @&=+$,/?%#[]</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, kCFStringEncodingUTF8)); Mac</span></span>= (nsstring *<span style="color: #000000;"><span style="color: #000000;">) cfbridgingrelease (cfurlcreatestringbyaddingpercentescapes (kcfallocatordefault, (cfstringref) mac, NULL, (cfstringref )</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">!* ' ();: @&=+$,/?%#[]</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, kCFStringEncodingUTF8)); NSString</span></span>*requesturl = [[nsstring alloc] initwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">https://ar.umeng.com/stat.htm?ak=%@&device_name=%@&idfa=%@&openudid=%@&idfv=%@&mac=%@ </span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, appkey,machine,idfa,openudid,idfv,mac]; Nserror</span></span>*error =<span style="color: #000000;"><span style="color: #000000;">nil; Nshttpurlresponse</span></span>*response =<span style="color: #000000;"><span style="color: #000000;">nil; Nsmutableurlrequest</span></span>*request =<span style="color: #000000;"><span style="color: #000000;">[nsmutableurlrequest Requestwithurl:[nsurl urlwithstring:requesturl]; NSData</span></span>*responsedata = [nsurlconnection sendsynchronousrequest:request returningresponse:&response error:&<span style="color: #000000;"><span style="color: #000000;">error]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span><span style="color: #000000;"><span style="color: #000000;">(responsedata) {</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">NSLog (@ "ok");</span></span><span style="color: #000000;"><span style="color: #000000;"> } } </span></span>+ (nsstring *<span style="color: #000000;"><span style="color: #000000;">) macstring{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>mib[<span style="color: #800080;"><span style="color: #800080;">6</span></span><span style="color: #000000;"><span style="color: #000000;">]; size_t len; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*<span style="color: #000000;"><span style="color: #000000;">buf; unsigned</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*<span style="color: #000000;"><span style="color: #000000;">ptr; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">struct</span></span>IF_MSGHDR *<span style="color: #000000;"><span style="color: #000000;">ifm; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">struct</span></span>SOCKADDR_DL *<span style="color: #000000;"><span style="color: #000000;">sdl; mib[</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span>] =<span style="color: #000000;"><span style="color: #000000;">ctl_net; mib[</span></span><span style="color: #800080;"><span style="color: #800080;">1</span></span>] =<span style="color: #000000;"><span style="color: #000000;">af_route; mib[</span></span><span style="color: #800080;"><span style="color: #800080;">2</span></span>] =<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">; mib[</span></span><span style="color: #800080;"><span style="color: #800080;">3</span></span>] =<span style="color: #000000;"><span style="color: #000000;">af_link; mib[</span></span><span style="color: #800080;"><span style="color: #800080;">4</span></span>] =<span style="color: #000000;"><span style="color: #000000;">net_rt_iflist; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>((mib[<span style="color: #800080;"><span style="color: #800080;">5</span></span>] = If_nametoindex (<span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">En0</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>)) ==<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">) {printf (</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">Error:if_nametoindex error\n</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">NULL; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(sysctl (mib,<span style="color: #800080;"><span style="color: #800080;">6</span></span>, null, &len, null,<span style="color: #800080;"><span style="color: #800080;">0</span></span>) <<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">) {printf (</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">error:sysctl, Take 1\n</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">NULL; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>((buf = malloc (LEN)) = =<span style="color: #000000;"><span style="color: #000000;">NULL) {printf (</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">Could not allocate memory. error!\n</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">NULL; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(sysctl (mib,<span style="color: #800080;"><span style="color: #800080;">6</span></span>, buf, &len, NULL,<span style="color: #800080;"><span style="color: #800080;">0</span></span>) <<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">) {printf (</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">error:sysctl, Take 2</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">); Free (buf); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">NULL; } IFM</span></span>= (<span style="color: #0000ff;"><span style="color: #0000ff;">struct</span></span>IF_MSGHDR *<span style="color: #000000;"><span style="color: #000000;">) buf; SDL</span></span>= (<span style="color: #0000ff;"><span style="color: #0000ff;">struct</span></span>SOCKADDR_DL *) (IFM +<span style="color: #800080;"><span style="color: #800080;">1</span></span><span style="color: #000000;"><span style="color: #000000;">); PTR</span></span>= (unsigned<span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*<span style="color: #000000;"><span style="color: #000000;">) lladdr (sdl); NSString</span></span>*macstring = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%02x:%02x:%02x:%02x:%02x:%02x</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span>*ptr, * (ptr+<span style="color: #800080;"><span style="color: #800080;">1</span></span>), * (ptr+<span style="color: #800080;"><span style="color: #800080;">2</span></span>), * (ptr+<span style="color: #800080;"><span style="color: #800080;">3</span></span>), * (ptr+<span style="color: #800080;"><span style="color: #800080;">4</span></span>), * (ptr+<span style="color: #800080;"><span style="color: #800080;">5</span></span><span style="color: #000000;"><span style="color: #000000;">)]; Free (buf); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">macstring;}</span></span></pre><p><p></p></p><p><p>Umeng Channel stats iOS</p></p></span>