Onsen UIにおいて、iPhoneXからiPhone14を判別する場合、ons.platform.isIPhoneX()を使用しますが、公式ホームページで配布しているVer.2.11.2は、iPhone13およびiPhone14は未対応となっています。
ons.platform.isIPhoneX()のコードを確認すると、window.screen.widthおよびwindow.screen.heightのサイズでiPhoneの種類を判別しているので、Onsen UIのコードを書き換えないと対応できません。
今回は、cordova-plugin-deviceプラグインを使用して、iPhoneXからiPhone14を判別する方法を紹介します。
まず、cordova-plugin-deviceプラグインでiOSかどうか判別する場合、device.platformプロパティを使用します。
次に、iPhoneの種類を判別する場合、device.modelプロパティを使用します。
ここで問題なのが、プロパティの値が「iPhone14」とか「iPhone14Plus」という文字が格納されていればよいのですが、実際には「iPhone14,7」「iPhone14,8」となっています。
ややこしいのが、iPhone13は「iPhone14,5」、iPhoneSE第3世代は「iPhone14,6」と、13だから13というわけではないということです。
なので、古いiPhoneおよびiPhoneSE系はFalseとし、それ以外はTrueとするコードを書けば、iPhoneSE第4世代などがリリースされたときだけコードを更新すればよいということになります。
app.isIPhoneX = function () {
if (device.platform != "iOS") return false;
switch (device.model) {
case "iPhone1,1":
case "iPhone1,2":
case "iPhone2,1":
case "iPhone2,1":
case "iPhone3,1":
case "iPhone3,2":
case "iPhone3,3":
case "iPhone4,1":
case "iPhone5,1":
case "iPhone5,2":
case "iPhone5,3":
case "iPhone5,4":
case "iPhone6,1": // 5s
case "iPhone6,2":
case "iPhone7,1": // 6
case "iPhone7,2":
case "iPhone8,1": // 6s
case "iPhone8,2":
case "iPhone8,4": // SE 1st
case "iPhone9,1": // 7
case "iPhone9,2":
case "iPhone9,3":
case "iPhone9,4":
case "iPhone10,1": // 8
case "iPhone10,2":
case "iPhone10,4":
case "iPhone10,5":
case "iPhone12,8": // SE 2nd
case "iPhone14,6": // SE 3rd
return false;
}
return true;
};
ところで、1USドルが一時151円を突破しました。
来年のApple Developer Programがいくらになるか気になりますね。