-
Notifications
You must be signed in to change notification settings - Fork 4
/
deviceconfig.go
98 lines (89 loc) · 2.09 KB
/
deviceconfig.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package tunes
import (
"encoding/json"
"fmt"
"strings"
tools "github.com/yinyajiang/go-ytools/utils"
)
//DeviceConfigInfo ...
type DeviceConfigInfo struct {
Name string `json:"name"`
Identifier string `json:identifier"`
Boardconfig string `json:"boardconfig"`
Platform string `json:"platform"`
Cpid int64 `json:"cpid"`
Bdid int64 `json:"bdid"`
}
var deviceList []DeviceConfigInfo
//GetDeviceName ...
func GetDeviceName(model string) string {
for _, info := range GetDeviceConfigList() {
if info.Identifier == model {
return info.Name
}
}
return ""
}
//GetDeviceType ...
func GetDeviceType(model string) string {
if strings.HasPrefix(model, "iPhone") {
return "iPhone"
} else if strings.HasPrefix(model, "iPad") {
return "iPad"
} else if strings.HasPrefix(model, "iPod") {
return "iPod"
}
return "unknow"
}
//GetDeviceModel ...
func GetDeviceModel(chipID, boardID int64) string {
for _, info := range GetDeviceConfigList() {
if info.Cpid == chipID && info.Bdid == boardID {
return info.Identifier
}
}
return "unknow"
}
//GetDeviceAppearanceLevel ...
func GetDeviceAppearanceLevel(model string) int {
switch GetDeviceType(model) {
case "iPhone":
if tools.CmpVersion(model, "iPhone12,8") == 0 { //iPhone se2
return 0
} else if tools.CmpVersion(model, "iPhone10,3") >= 0 { //iPhone x
return 3
} else if tools.CmpVersion(model, "iPhone10,1") >= 0 {
return 2
} else if tools.CmpVersion(model, "iPhone9,1") >= 0 &&
tools.CmpVersion(model, "iPhone9,4") <= 0 {
return 1
}
case "iPad":
if tools.CmpVersion(model, "iPad8,1") >= 0 &&
tools.CmpVersion(model, "iPad8,12") <= 0 {
return 1
}
case "iPod Touch":
if tools.CmpVersion(model, "iPod9,1") >= 0 {
return 1
}
}
return 0
}
//GetDeviceConfigList ...
func GetDeviceConfigList() []DeviceConfigInfo {
if deviceList != nil {
return deviceList
}
data, err := tools.ReadFileAll(tools.LocalPath("devices.json"))
if err != nil {
fmt.Println(err)
return nil
}
err = json.Unmarshal(data, &deviceList)
if err != nil {
fmt.Println(err)
return nil
}
return deviceList
}