U3D获取ios信息:IDFA、设备型号、包名

news/2024/12/22 2:56:43/

Unity端

新建个脚本,然后绑定到一个对象上,脚本代码如下,这片代码我就不多说了,不懂得自己 
去看下iOS和Unity的互调。弄完后导出IOS工程。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Runtime.InteropServices;//Must be Definedpublic class GetIdentertyControl : MonoBehaviour {// Use this for initializationpublic Text IDFA;public Text DisplayName;public Text DeviceModel;[DllImport("__Internal")]private static extern void _GetIDFA ();public void GetIDFA(string str){if (string.IsNullOrEmpty(str)) {Debug.Log("IDFA is NULL");return;}IDFA.text = str;}[DllImport("__Internal")]private static extern void _GetDisplayName ();public void GetDisplayName(string str){if (string.IsNullOrEmpty(str)) {Debug.Log("DisplayName is NULL");return;}DisplayName.text = str;}[DllImport("__Internal")]private static extern void _GetDeviceModel ();public void GetDeviceModel(string str){if (string.IsNullOrEmpty(str)) {Debug.Log("DeviceModel is NULL");return;}DeviceModel.text = str;}public void OnClickButton(){if(Application.platform != RuntimePlatform.OSXEditor){_GetIDFA();_GetDeviceModel();_GetDisplayName();}}
}



IOS端

  • 先新建个OC的类吧,然后把官方的KeychainItemWrapper代码拷贝进去。然后在CompileSources中选中该类 添加-fno-objc-arc。
  • 导入两个包
  • Security.framework
  • AdSupport.framework
  • 然后再新建一个类,来使用之前导入的KeychainItemWrapper:
  • #import "NinjaUUID.h"
    #import "KeychainItemWrapper.h"
    #include <sys/types.h>
    #include <sys/sysctl.h>#define APP_IDENTIFIER @"zhujingjing@bccv.com"@implementation NinjaUUID+(NSString*) uuid {CFUUIDRef puuid = CFUUIDCreate( nil );CFStringRef uuidString = CFUUIDCreateString( nil, puuid );NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));CFRelease(puuid);CFRelease(uuidString);return result;
    }+(void) saveToKeyChain {NSString *uuid = [self uuid];KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:APP_IDENTIFIER accessGroup:nil];[wrapper setObject:uuid forKey:(__bridge id)kSecValueData];}+(NSString*) getUUIDFromKeyChain {KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:APP_IDENTIFIER accessGroup:nil];NSString *password = [wrapper objectForKey:(__bridge id)kSecValueData];return password;
    }+ (NSString *)getCurrentDeviceModel
    {int mib[2];size_t len;char *machine;mib[0] = CTL_HW;mib[1] = HW_MACHINE;sysctl(mib, 2, NULL, &len, NULL, 0);machine = malloc(len);sysctl(mib, 2, machine, &len, NULL, 0);NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];free(machine);//iPhoneif ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G (A1203)";if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G (A1241/A1324)";if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS (A1303/A1325)";if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (A1332)";if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (A1332)";if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (A1349)";if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S (A1387/A1431)";if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (A1428)";if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (A1429/A1442)";if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone5c (A1456/A1532)";if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (A1507/A1516/A1526/A1529)";if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (A1453/A1533)";if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (A1457/A1518/A1528/A1530)";if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 (A1549/A1586)";if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus (A1522/A1524)";if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s (A1633/A1688/A1691/A1700)";if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus (A1634/A1687/A1690/A1699)";//iPod Touchif ([platform isEqualToString:@"iPod1,1"])   return @"iPod Touch (A1213)";if ([platform isEqualToString:@"iPod2,1"])   return @"iPod Touch 2G (A1288)";if ([platform isEqualToString:@"iPod3,1"])   return @"iPod Touch 3G (A1318)";if ([platform isEqualToString:@"iPod4,1"])   return @"iPod Touch 4G (A1367)";if ([platform isEqualToString:@"iPod5,1"])   return @"iPod Touch 5G (A1421/A1509)";if ([platform isEqualToString:@"iPod7,1"])   return @"iPod Touch 6G (A1574)";//iPadif ([platform isEqualToString:@"iPad1,1"])   return @"iPad (A1219/A1337)";if ([platform isEqualToString:@"iPad2,1"])   return @"iPad 2 (A1395)";if ([platform isEqualToString:@"iPad2,2"])   return @"iPad 2 (A1396)";if ([platform isEqualToString:@"iPad2,3"])   return @"iPad 2 (A1397)";if ([platform isEqualToString:@"iPad2,4"])   return @"iPad 2 (A1395+New Chip)";if ([platform isEqualToString:@"iPad3,1"])   return @"iPad 3 (A1416)";if ([platform isEqualToString:@"iPad3,2"])   return @"iPad 3 (A1403)";if ([platform isEqualToString:@"iPad3,3"])   return @"iPad 3 (A1430)";if ([platform isEqualToString:@"iPad3,4"])   return @"iPad 4 (A1458)";if ([platform isEqualToString:@"iPad3,5"])   return @"iPad 4 (A1459)";if ([platform isEqualToString:@"iPad3,6"])   return @"iPad 4 (A1460)";//iPad Airif ([platform isEqualToString:@"iPad4,1"])   return @"iPad Air (A1474)";if ([platform isEqualToString:@"iPad4,2"])   return @"iPad Air (A1475)";if ([platform isEqualToString:@"iPad4,3"])   return @"iPad Air (A1476)";if ([platform isEqualToString:@"iPad5,3"])   return @"iPad Air 2 (A1566)";if ([platform isEqualToString:@"iPad5,4"])   return @"iPad Air 2 (A1567)";//iPad miniif ([platform isEqualToString:@"iPad2,5"])   return @"iPad mini 1G (A1432)";if ([platform isEqualToString:@"iPad2,6"])   return @"iPad mini 1G (A1454)";if ([platform isEqualToString:@"iPad2,7"])   return @"iPad mini 1G (A1455)";if ([platform isEqualToString:@"iPad4,4"])   return @"iPad mini 2 (A1489)";if ([platform isEqualToString:@"iPad4,5"])   return @"iPad mini 2 (A1490)";if ([platform isEqualToString:@"iPad4,6"])   return @"iPad mini 2 (A1491)";if ([platform isEqualToString:@"iPad4,7"])   return @"iPad mini 3 (A1599)";if ([platform isEqualToString:@"iPad4,8"])   return @"iPad mini 3 (A1600)";if ([platform isEqualToString:@"iPad4,9"])   return @"iPad mini 3 (A1601)";if ([platform isEqualToString:@"iPad5,1"])   return @"iPad mini 4 (A1538)";if ([platform isEqualToString:@"iPad5,2"])   return @"iPad mini 4 (A1550)";if ([platform isEqualToString:@"i386"])      return @"iPhone Simulator";if ([platform isEqualToString:@"x86_64"])    return @"iPhone Simulator";return platform;
    }+ (NSString *)getDisplayName{NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];CFShow(infoDictionary);// app名称NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];return app_Name;
    }@end


    再新建个类,这个类就是和Unity进行消息互换的。
  • #import "InteractiveToUnity.h"
    #import "NinjaUUID.h"
    #import <AdSupport/AdSupport.h>@implementation InteractiveToUnityvoid _GetIDFA (){const char* gameObject = "Main Camera";const char* functionname = "GetIDFA";NSString *str = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];UnitySendMessage(gameObject, functionname, [str UTF8String]);
    };/*
    void _GetVerdorid (){const char* gameObject = "Main Camera";const char* functionname = "GetVerdorid";NSString *str=[NinjaUUID getUUIDFromKeyChain];if(str == nil || [str  isEqual: @""]){[NinjaUUID saveToKeyChain];str = [NinjaUUID getUUIDFromKeyChain];}UnitySendMessage(gameObject, functionname, [str UTF8String]);
    };
    */void _GetDeviceModel(){const char* gameObject = "Main Camera";const char* functionname = "GetDeviceModel";NSString *str=[NinjaUUID getCurrentDeviceModel];UnitySendMessage(gameObject, functionname, [str UTF8String]);
    }void _GetDisplayName(){const char* gameObject = "Main Camera";const char* functionname = "GetDisplayName";NSString *str=[NinjaUUID getDisplayName];UnitySendMessage(gameObject, functionname, [str UTF8String]);
    }@end




http://www.ppmy.cn/news/317449.html

相关文章

PAT A1153

题目&#xff1a;https://pintia.cn/problem-sets/994805342720868352/problems/1071785190929788928 这道题我很久才AC&#xff0c;主要是不知道原来它的输入可以乱来。我原先是单独用scanf接收flag&#xff0c;然后再分三种情况接收后面的东西&#xff0c;即flag1&#xff0…

PAT a1125

目的&#xff1a;一堆绳段&#xff0c;组成最长绳子。 输入&#xff1a; N 绳段条数 N个整数 输出&#xff1a; 输出最长的长度&#xff0c;向下取整。 算法&#xff1a; 短的先加&#xff0c;折半的就少&#xff0c;把长的留在最后。因此用vector&#xff0c;并且排序…

A1095(30)

本题要注意查询有几辆车的时候如果采取遍历的方式容易产生超时的现象&#xff0c;所以我们要采取第二次排序&#xff0c;剩下的就是根据题意来做就可以了&#xff0c;注意字符串数组比较strcmp&#xff08;a&#xff0c;b&#xff09;0说明两者相同&#xff0c;采用map的话&…

增加Default-568h@2x.png支持iphone5

之前不知道&#xff0c;在iphone5上试程序&#xff0c;结果出现上下黑条。 搜索之 http://stackoverflow.com/questions/12479647/uiview-is-not-resizing-on-iphone-5-simulator http://stackoverflow.com/questions/12395200/how-to-develop-or-migrate-apps-for-iphone-5…

iOS15绕过激活工具TiggerRamDisk3.0,支持最新iOS15.5绕过

Tigger团队推出了最新的软件TiggerRamDisk3.0。这是一款绕过激活锁、屏幕锁界面的软件&#xff0c;也可以解决手机或者平板无法激活的问题。最重要的是它现在已经支持最新的iOS15系统&#xff0c;包括目前最新iOS 15.5 beta都是支持的。 目前支持的型号&#xff1a; iPhone6S…

XDRamD工具 windows 7-10-11系统苹果绕过激活锁ID界面 新工具,屏幕锁界面打电话,苹果X 16系统也支持,

支持14-15-16系统6S-X 平板mini4-iPad Pro2(12.9) 电脑支持windows10&#xff0c;windows11&#xff0c;支持windows7 激活锁页面是删基带绕过所以会耗电一点&#xff0c;解完不能插卡打电话。有些要安装描述文件才可以的软件不行&#xff0c; 因为15系统激活锁界面解ID必…

TiggerRamDisk绕过激活锁,屏幕锁隐藏工具新增 W in7 win 10版本,支持最新 iOS16.3系统

TiggerRamDisk这是一款可以绕过激活锁、屏幕锁界面完美隐藏的工具&#xff0c;也可以解决手机或者平板无法激活的问题&#xff0c;支持最新的IOS14.0-iOS16.3系统&#xff0c;支持Windows10以上和MacOS环境苹果系统使用。 目前支持的型号&#xff1a; 需要工程线 iPhone&#x…

TiggerRamDisk的超详细使用教程(亲测成功)

目录 一、软件介绍 (一)型号对应 (二)可以支持的功能: 二、操作步骤