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がいくらになるか気になりますね。

Recommended Posts