ケータイFlashで携帯キャリアを判別するには

By ookura - 10/05/24 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

今回は携帯Flash単体で端末の携帯キャリアを判別する方法についてご紹介します。
 

概要

携帯キャリアによって表示やリンク先を変えたい場合、PHPなどのサーバーサイド処理で判別して渡す方法もありますが、Flashの動的生成やPHPとの連携が必要なので少し敷居が高いかもしれません。
 
少し裏技的な手法になりますが、fscommand2関数でキャリア判別することも可能なのです。
 

電波の最大強度でキャリアを判別

fscommand2関数には、直接キャリアを取得するオプションは存在しません。
ですが、電波の最大強度を取得する方法「fscommand2(“GetMaxSignalLevel”);」を応用することで可能になります。
これは通常は電波強度を取得する「fscommand2(“GetSignalLevel”)」と組み合わせて使用するのですが、
下記のように電波の最大強度を取得してみると、

sigStrengthMax = fscommand2("GetMaxSignalLevel");

キャリアによってある程度決まった値が返ってきますので、これを利用します。

DoCoMo→3
au→4
Softbank→4または100

 

auとSoftbankは端末名で判断

auとSoftbankの一部端末で同じ電波最大強度(4)が返りますので
こちらは端末名で判断します。
端末名は下記のようにするとdevicenameに端末名が格納されます。

fscommand2("GetDevice", "devicename");

auの場合、「KDDI-CA3D」(CA001の場合)のように、
先頭が必ず「KDDI-」となりますので、これでauとSoftbankを判別することができます。
 

サンプルソース

・240px×240pxでパブリッシュバージョンFlashLite1.1でFlashを作成します。
・ステージ上にキャリアを表示するダイナミックテキスト「変数名:carrier」を配置します。
・下記のフレームアクションを記述し、キャリアの判別結果を変数(carrier)に格納するようにします。
フレームアクション:1フレーム目

// 最大電波強度を取得
sigStrengthMax = fscommand2("GetMaxSignalLevel");
// 端末名を取得
fscommand2("GetDevice", "devicename");
// 最大電波強度が3であればDoCoMo
if (sigStrengthMax == 3) {
    carrier = "docomo";
    // 最大電波強度が4で
} else if (sigStrengthMax == 4) {
    // 端末名の先頭が「KDDI-」であればau
    if (substring(devicename, 0, 5) eq "KDDI-") {
        carrier = "au";
        // でなければSoftbank
    } else {
        carrier = "softbank";
    }
    // 最大電波強度が100であればSoftbank
} else if (sigStrengthMax == 100) {
    carrier = "softbank";
    // それ以外は不明(PC等)
} else {
    carrier = "unknown";
}
// リンク先を指定
deviceLink = "/Sample/post5514/" add carrier add "/";

 
・フレームアクションで変数(deviceLink)にキャリア別のURLを設定していますので、
ステージ上にリンクボタンを配置し、キャリア毎に異なるURLにリンクできるようにします。
「link」ボタンのボタンアクションは下記の通りです。

on (press) {
    getURL(deviceLink);
}

・パブリッシュしてリンク先のページを用意すれば出来上がりです。
 

備考

・本記事は全端末にて検証したものではありません。
機種によっては上記手法ではうまく判別できないケースがある可能性があります。
また今後、新機種が登場して仕様が変更になれば別途調整が必要になる可能性がありますのでご参考までに。
特に業務で使用される場合は実機やDeviceCentralにて確認されることをお勧めします。
 
・Softbankの最大電波強度については世代や端末によって異なるようですが、詳細は未確認です。
 
・動的生成を行い、かつ負荷軽減のために生成SWFを保存する場合の話になりますが、mailtoの本文生成や絵文字出力処理と組み合わせるとキャリア別に生成SWFを保存しなくてよくなるかもしれません。
→参照:「ケータイFlashのmailtoリンクを3キャリア対応にしてみよう」
→参照:「ケータイFlashで3キャリア対応絵文字を表示するには」
ご参考までに。
 

参考URL

▼GetMaxSignalLevel Flash CS3 ドキュメンテーション
http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00005859.html
 
▼Flash Lite1.1で3キャリア判別 | alt
http://blog.alt-scape.com/archives/343
 
▼続・Flash Lite1.1からメーラー起動メモ | alt
http://blog.alt-scape.com/archives/344
 
▼携帯用FlashLiteまとめ | 村式開墾日記
http://blog.ville.jp/2009/06/03/131
 
▼電波状況によって表示を変える。携帯FLASH待ち受けTips | ケータイFlash ラボ!! Mobile Flash rab.
http://mobilef.jugem.jp/?eid=35
 
 

実行例

実行例はこちらからご確認下さい。

URLをメールで送る
http://ookura.tanikaze.com/Sample/post5514/
 
 

サンプルファイル

sample5514.zip
上記サンプルのFlashファイル一式です。(Flash8形式・FlashLite1.1)
 
 

関連ページ

ケータイFlash関連の記事一覧