Skip to main content

I noticed a trend recently that we get all sorts of events from users on Android and iOS devices, and we get the Device Type for almost everyone. But for some reason we haven’t logged a single iPhone 12 or iPhone 13 as a device type.

I ran some tests on my device and can confirm that these events go through on an iPhone 13. I even confirmed that the event carries “device_model":"iPhone 13"”. However when I look up that same event in the Amplitude dashboard, it has a blank for Device Type. I ran the exact same experiment using an iPhone 11. It has “device_model":"iPhone 11"” in the event. On the Amplitude dashboard, it has “iPhone 11” for Device Type. 

Does anyone know why this is? It doesn’t appear to be a problem with the amplitude SDK, but rather one with the backend/dashboard. Maybe I’m missing something?

Hi @dale.laplante, I understand that our Support Engineer Eddie has already responded to you via a Support Ticket directly. 

Pasting his answer below for others who might have the same question as you: 

---
 
We pull the device information from the user's device information.

As noted in the HTTP API documentation, Amplitude will attempt to use device_brand, device_manufacturer, and device_model to map the corresponding device type and device family. Please take a careful look at Footnote 2 of the HTTP API doc; Device Family can be null if some of the fields are not updated together.

In order to get the device information (device_brand, device_manufacturer, and device_model), you will need to implement something similar to the Amplitude Android SDK or Amplitude iOS SDK.

For example, here's the relevant code line for grabbing the device_model:
https://github.com/amplitude/Amplitude-iOS/blob/aa5591a89391bb12a248731359da09751496736a/Amplitude/AMPDeviceInfo.m#L208
Also, note that "Device family" and "Device type" are determined based on the model and manufacturer we pull. For example, the device manufacturer might be Samsung and the device model might be SM-G900T -- using these two details, we'll determine:
- "Device family = Samsung Galaxy Phone"
- "Device type = Samsung Galaxy S5"

We then generate the 'aAmplitude] Device family' and 'lAmplitude] Device type' values based on a custom mapping that we do whenever we encounter new devices. Sometimes, the Device type might not be added to the data. This is because, with each new phone model that comes out globally, we update our device type mapping when we see a new device model. For context, as of 2015, Android has more than 24,000 unique devices (both tablets and smartphones); so it's very difficult for Amplitude to proactively search globally for all new devices that are being released. If there are any device types that you would like added, please let me know and I'll make a feature request for our Product team to add them.
In this case, the Device model for this user, here, is incorrect to map to the Device Type Apple iPhone 13. The correct information would be the following:
 
"device_manufacturer": "Apple",
"device_model": "iPhone14,5"
 
I tested this and in my project, I can see iPhone 13 as the Device Type.
 
?name=Screen+Shot+2022-09-09+at+10.11.03.png
 
Hope this helps!
 
-Eddie 


Reply