(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

OS名などの端末情報を付けたメール機能【Unity】


このエントリーをはてなブックマークに追加

はじめに

ユーザからの不具合報告があった時に、

どの端末だとか、OSのバージョンはなんだとか知りたくなりますよね。


という事で、それらの端末情報を最初から記入した状態でメーラーが起動する機能を作りました。


OpenMailer.cs

早速コードです!



使い方は簡単で、このOpenMailer()を呼ぶだけです。

そうするとiOSでもAndroidでも、なんならUnity上でも以下のような画面でメーラーが起動します。


f:id:kan_kikuchi:20150306044628j:plain


記載される情報は画像の通り、

  • 端末名
  • OS
  • アプリのバージョン
  • 言語

です。


コード説明

次にコード説明行ってみましょー


アプリ名、アプリバージョン

アプリ名とアプリのバージョンはPlayerSettingsで設定した値を表記しています。


f:id:kan_kikuchi:20150306050155j:plain


アプリ名はPlayerSettings.productName

アプリのバージョンは PlayerSettings.bundleVersion

で取得出来るのですが、PlayerSettingsを使うにはusing UnityEditorを使う必要があります


つまりそのスクリプトをEditorフォルダに入れなくてはならず

実機上では使えない事になります…!


これではいかんので、これらを記載した定数クラスを"自動"で作成しそれを参照しています。


自動で定数クラスを作成、更新する方法は以下の記事をご覧ください。



上記記事にあるSettingClassCreator、Create()の一番下当たりに以下のコードを記載すると、

PlayerSettingsを更新する度に定数クラスを作り直してくれます。

Dictionary<string, string> playerSettingsDic = new Dictionary<string, string>(){
      {"ProductName"  , PlayerSettings.productName},
      {"BundleVersion", PlayerSettings.bundleVersion},
    };

ConstantsClassCreator.Create ("PlayerSettingsValue", "PlayerSettingsの設定を定数で管理するクラス", playerSettingsDic);


これを使って出来た定数クラスが以下で、

/// <summary>
/// PlayerSettingsの設定を定数で管理するクラス
/// </summary>
public static class PlayerSettingsValue
{
  public const string PRODUCT_NAME   = "アプリ名";
  public const string BUNDLE_VERSION = "1.0";
}


PlayerSettingsValue.PRODUCT_NAMEのように参照して使っております。


端末名、OS

端末名やOS名はSystemInfoを使う事で取得しています。



ただし、iPhoneの端末名をdeviceModelで取るとiPhone6PlusがiPhone8などと表示されてしまうため、

iPhone.generation.ToString()で取得しています。


追記(2015.06.05)

Unity5ではiPhone.generationが使えなくなっているので、

string deviceName = SystemInfo.deviceName;


に変更する事で、iOSとAndroid双方のデバイス名が取得できます。


言語

使用言語はApplication.systemLanguage.ToString ()

を使って取得しています。


メーラー起動

Application.OpenURLの最初に"mailto:"を記載するとメーラーが起動するようです。


Unityからメール機能を呼び出す


最初にメールアドレス

続いて"?subject="の後にタイトル

最後に"&body="の後に本文

という形式です。


おわりに

この機能をどれぐらいユーザが使ってくれるかは分かりませんが、

これでバグ報告をしてくれたらめちゃくちゃ助かりますね…!