-
Notifications
You must be signed in to change notification settings - Fork 1
SupportPolicy
uupaa edited this page Aug 18, 2015
·
24 revisions
このエントリでは、古いデバイスを断捨離する方法について説明します。
具体的には、あらかじめ古いデバイスのサポートをどうするか(サポートポリシー)を決めた上で、適切に運用するための方法について説明します。
Spec.THRESHOLD はサポートポリシーを数値化したものです。
これらの値を修正すると Spec.dump(), Spec#LOW_END, Spec#OUTMODED の結果が変化します。
// default values
Spec.THRESHOLD.OUTMODED = 24; // 24 months was passed.
Spec.THRESHOLD.LOW_END_CPU_CORES = 2; // dual core
Spec.THRESHOLD.LOW_END_CPU_SPEED = 1.2; // 1.2 MHz
Spec.THRESHOLD.LOW_END_GPU_GFLOPS = 19; // 19 GFLOPSOUTMODED を 24 に設定しているのは以下の理由からです。
- 2年縛り文化
- 24ヶ月ごとに新しいデバイスに乗り換えるユーザが多くいます
- バッテリー寿命の劣化
- 500回充電すると容量が60%に減り、1000回充電すると40%に減ります
- Nexus シリーズのアップデートポリシー
- Google Nexus シリーズの OS アップデート保証期間は発売から
18ヶ月24ヶ月です - Google Nexus シリーズのセキュリティアップデート期間はおよそ3年です。
- Google Nexus シリーズの OS アップデート保証期間は発売から
- 多くのキャリアが、2〜3年経過したデバイスをサポート対象から外しています
ゲーム用のセッティング例です。
Spec.THRESHOLD.OUTMODED = 24; // 発売から24ヶ月(+6ヶ月)以上経過したデバイスはサポートしたくない
Spec.THRESHOLD.LOW_END_CPU_CORES = 2; // デュアルコアCPU 以下で...
Spec.THRESHOLD.LOW_END_CPU_SPEED = 1.5; // 1.5 GHz 以下のデバイスはサポートしたくない...
Spec.THRESHOLD.LOW_END_GPU_GFLOPS = 80; // 80 GFLOPS 以下のヌルヌル動かないデバイスはサポートしたくない
// --- サポートポリシーに基づき端末を判定する ---
var ua = new UserAgent();
var spec = new Spec(ua);
if (spec.LOW_END || spec.OUTMODED) {
alert("お使いの端末では快適に遊ぶ事ができません");
location.href = "http://example.com/sorry.html";
}2012年夏頃に国内で発売された Android 4.0.x なデバイスや、iOS 6.x デバイスを判別する例です。
Spec.THRESHOLD = {
Spec.THRESHOLD.OUTMODED = 24; // 24 months was passed.
Spec.THRESHOLD.LOW_END_CPU_CORES = 2; // dual core
Spec.THRESHOLD.LOW_END_CPU_SPEED = 1.2; // 1.2 MHz
Spec.THRESHOLD.LOW_END_GPU_GFLOPS = 19; // 19 GFLOPS
var ua = new UserAgent();
var spec = new Spec(ua);
if ((ua.OS === "Android" && parseFloat(ua.OS_VERSION) < 4.1) ||
(ua.OS === "iOS" && parseFloat(ua.OS_VERSION) < 7.0)) {
if (spec.LOW_END || spec.OUTMODED) {
alert("この端末ではご利用になれません");
}
}この例では以下のデバイスを断捨離できます。
- iOS
- iPhone 3G/3GS/4/4s
- iPad 1/2/3/mini
- iPod touch 3/4/5
- Android
- Android one
- Nexus S/one/
- Galaxy Nexus/S/S II/Tab
- Xperia PLAY/arc/acro/acro HD/ray
シェアが大きい端末などを特別扱いする場合は、個別に指定してください。
var ua = new UserAgent();
var spec = new Spec(ua);
if (spec.SLOW_CPU || spec.SLOW_GPU) {
var ready = false;
if (spec.OS === "iOS") { // iOS デバイスは通す
ready = true;
} else if (/^(Xperia|Galaxy)/.test(spec.DEVICE)) { // 大人の事情
ready = true;
}
if (!ready) {
alert("お使いの端末では快適に遊ぶ事ができません");
}
}