Search Issue Tracker

Fixed in 2018.1



Found in


Issue ID




iPhone X has wrong Device enumeration



_DeviceModel in UnityDeviceModel() in is returning the wrong value for an iPhoneX, so UnityEngine.iOS.Device.generation is returning the incorrect enum for an iPhoneX. It returns iPhone8Plus.

_DeviceModel is returning iPhone10,6 for my iPhoneX, but the test in UnityDeviceGeneration() in that same file, assumes 10,6 is iPhone8Plus.

Change the code at line 96 of that file in an iOS build to have an NSLog at the end, to say :

extern "C" const char* UnityDeviceModel()
static const char* _DeviceModel = NULL;

if (_DeviceModel == NULL)
size_t size;
::sysctlbyname("hw.machine", NULL, &size, NULL, 0);

char* model = (char*)::malloc(size + 1);
::sysctlbyname("hw.machine", model, &size, NULL, 0);
model[size] = 0;

_DeviceModel = AllocCString([NSString stringWithUTF8String: model]);
NSLog(@"device model: %s", _DeviceModel);

this returns iPhone10,6, which is tested in :

else if (!strncmp(model, "iPhone10,2", 10) || !strncmp(model, "iPhone10,6", 10))
_DeviceGeneration = deviceiPhone8Plus;

which is incorrect.

Comments (2)

  1. A22280cd3b4a1ac7c3f45129418035df?d=mm


    Apr 20, 2018 09:57

    Is this fixed in 2017.4?

  2. B1c080ebddb821ebeba09b0bf5387041?d=mm


    Nov 20, 2017 02:19

    BTW i found this which has both 10,3 and 10,6 as iPhone X codes:

    iPhone10,3 :

    iPhone10,6 :

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.