レタスのかわをぜんぶむく

ぜんぶむきます

iOSの端末種別についてハマった話

ユーザーの登録している諸々のサーバログについて、
iPhone5だけ集計してというオーダーが来た。

既にDBにはその情報が入ってたのだけど
問題はそのフォーマット。

iPhone3,1

いやいや

そんなエンシェント端末使ってる人おらんやろ
と思って色々調べてみたら、どうやら

iPhone3,1 というのは iPhone 4を指す端末情報らしい。

最初はUnity内のメソッドで取れたりする情報なのかと思って
調べてみたらどうやら違っていて、iOS向けの広告SDK
リファレンスで見つけて、iOS側を調べたら発見。

使ったこと無いし、あんまりObjective-C使わないけど

struct utsname u;
uname(&u);
NSString *machine = [NSString stringWithCString:u.machine];

こんな感じで取れるっぽい。

最初サーバー側読んで、UA内に端末情報入ってないよねぇ…
とか思って首捻ってたんだけど、どうやらクライアント側で
取得したものをPOSTデータか何かに入れて、サーバ側で処理が正解。

割と新しいっぽいリストも見つけたのでリンク
List of iOS device codes types a.k.a. machine ids (e.g. iPhone1,1) and their matching product names · GitHub

うーむ、ネイティブ側の知識足らないっすなー
Unity使わずネイティブでゲーム以外のアプリ作ってみようかな