Konyアプリで端末情報を取得する

##目次
1. はじめに
2. 実装方法
3. まとめ

##はじめに
アプリ開発をしていて、アプリの利用者はどんな端末を持っているのか、
端末によってアプリの動きを変えたい等、
ユーザーが利用している端末情報を取得したい場面が多々あるかと思います。
そんな時に、Konyの標準APIを使うことによって簡単にユーザーのデバイス情報を取得することができます:ok_woman_tone1:

今回はその方法についてご説明したいと思います！

##実装方法
デバイス情報を取得するためには、
`kony.os.deviceInfo();`を使うことで端末情報を取得することができます。


```CmnInsertDeviceinfo.js
const CmnInsertDeviceinfo = function(){
  
  var deviceData = {};
  
  const set = function(){
   //デバイス情報を取得し、deviceInfo変数に格納
    var deviceInfo = kony.os.deviceInfo();

    //端末情報の取得
    deviceData.os = deviceInfo.name;
    deviceData.version = deviceInfo.version;
    deviceData.name = deviceInfo.model;

  };
  
  const get = function(){
    return deviceData;
  };

  return{
    set : set,
    get : get
  };

}();
```

モジュールにデバイス情報取得ロジックを作成したので、
取得したいタイミングで`CmnInsertDeviceinfo.get();`を呼び出せばOKです:raised_hand_tone1:

今回は、ログインの時点でデータ取得したいので、ログイン画面で呼び出します。

```frmLogin.js
    var device = CmnInsertDeviceinfo.get();
```

デバイス情報取得の実装は、これで完了です！

では、実際にiPhoneXR（ver13.4）の実機でBuildを行い、
どんな情報が取得できたかみてみると、以下のような情報が取得できました！
※端末が特定できる情報はxxxとしています。

```
{
	"hasaccelerometer": true,
	"hastouchsupport": true,
	"modelIdentifier": "iPhone11,8",
	"deviceHeight": 1792,
	"screenHeight": 896,
	"customedeviceid": xxxx",
	"version": "13.4",
	"hasorientationsupport": true,
	"hasgps": true,
	"hasCamera": true,
	"name": "iPhone",
	"deviceid": "xxxxx",
	"deviceWidth": 828,
	"customdeviceid": "xxxxx",
	"model": "iPhone XR",
	"osversion": 13.4,
	"screenWidth": 414,
	"identifierForVendor": "xxxx",
	"osname": "i-phone",
	"hasforcetouchsupport": false
}
```

通常だと、デバイス情報は、`userAgent`で取得ができ↓ような情報が取得できますが、
欲しい情報を取得するために、以下のように一度小文字に戻すなどする必要があるため少し面倒です。。:frowning2:
●iOSのデバイス情報（例）
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3

```
var userAgent = window.navigator.userAgent.toLowerCase();

if(userAgent.indexOf('chrome') != -1) {
    console.log('Google Chromeを使っています');
}
```

この点Konyの場合は、標準のAPIを利用して取りたい情報を指定するだけで
簡単に情報取得ができるので、とっても便利です:thumbsup_tone1:

今回は、ソースコード上ではデバイスの名前やOSバージョンなどのみを取得していますが、
そのほかにもカメラやforceTouchの有無などのの情報も取得できるので、
それぞれのデバイスに応じたアプリの開発が可能になります。

【上記以外で取得できる情報】

| 値                    | 内容                                              |
|----------------------|-------------------------------------------------|
| screenWidth          | デバイスの向きを考慮して、デバイスの画面幅を指定                      |
| screenHeight         | デバイスの向きを考慮して、デバイスの画面の高さを指定                      |
| deviceID             | 一意のデバイス識別子                                      |
| SERIAL_NO            | 英数字で大文字と小文字を区別しないハードウェアシリアル番号                   |
| ANDROID_ID           |                                                 |
| uid                  | 一意のデバイスID、GSMの場合はIMEI、CDMA電話の場合はMEIDまたはESNを返します |
| name                 | iPhone、iPad、Windows Phoneなどのデバイスの名前             |
| model                | デバイスのモデル番号                                      |
| version              | デバイスのバージョン名                                     |
| deviceWidth          | デバイスの幅をピクセル単位で指定 ※ネイティブのみ                       |
| deviceHeight         | デバイスの高さをピクセル単位で指定 ※ネイティブのみ                      |
| hasforcetouchsupport | forceTouchが搭載されているか（ある場合はtrueを返却）               |
| hasCamera            | カメラが搭載されているか（ある場合は、trueを返却）                     |


##まとめ
今回はデバイス情報の取得方法について、説明をしました。
デバイス情報を取得することによって、様々なデバイスを利用する一般向けユーザー向けに様々な開発が可能になるので、是非この機能も活用してみてくださいね:ok_hand:


##参考
[Device Infoの説明（Kony公式ドキュメント）](https://docs.kony.com/konylibrary/visualizer/viz_api_dev_guide/content/kony.os_objects_deviceinfo.htm
)