「iphone」と一致するもの

PlayFabのログインユーザーの識別IDとして、SystemInfo.deviceUniqueIdentifierを使用している状況で。
アプリのアンインストールなどせずに、ただAppStoreでアップデートしただけなのにIDが変化して新規ユーザー扱いになってしまう事象が2件発生した。
ユーザー端末は、いずれもiPhone8で iOS 11.3 と iOS 12.2 だった。
iOSのバグなのか不明だが非常に困る。

ひとまず対策として
初回のみ SystemInfo.deviceUniqueIdentifierを取得してPlayerPrefsに保存し、
2回目以降はPlayerPrefsに保存しておいた値を使うことにした。
アンインストールしない限りPlayerPrefsは残っているはずなのでたぶん大丈夫だと思う。

対策としてKeychainにIDを保存することにした。
Keychainに保存したデータは、たとえアンインストールしても残るのでPlayerPrefsより安心。
有償アセットiOS Keychain Pluginを使ったが、ネイティブ部分はunity-ios-keychain-pluginと同じだったので買わなくても良かったかも。
有償の方は、iOS以外の場合にpersistentDataPathに暗号化したファイルとして保存するようになっていた。

スマホで立体ドット絵!Q-BLOCK

  • 投稿日:
  • by
  • カテゴリ:
Web版Q-BLOCKの公開から5年を経て、ついにスマホアプリになりました。
iPhoneでもAndroidでも好きなだけ3Dドット作品を作れます。
みんなの作品を眺めるだけでも楽しいのでぜひダウンロードしてください!

Xcode5.1にアップデートしたところ、
Unityで'Build And Run' ã‚’してもXcodeプロジェクトが立ち上がらなくなり下記のエラーが出た。

"UnityException: Launching iOS project via Xcode4 failed. Check editor log for details"

解決策は下記の手順。

1)下記のファイルをテキストエディタで開く
Unity.app/Contents/BuildTargetTools/iPhonePlayer/Unity4XC.xcplugin/Contents/Info.plist

2)下記の行を見つける
<key>DVTPlugInCompatibilityUUIDs</key>
<array>
<string>63FC1C47-140D-42B0-BB4D-A10B2D225574</string>
<string>37B30044-3B14-46BA-ABAA-F01000C27B63</string>
</array>

3)<array></array>内に下記を追記する
<string>A2E4D43F-41F4-4FB9-BB94-7177011C9AED</string>

4)保存して、Xcode再起動



参考ページ:

【Unity】UUIDの生成と保存

  • 投稿日:
  • by
  • カテゴリ:
Unityでは端末固有ID取得用に SystemInfo.deviceUniqueIdentifier ãŒã‚りますが
これはiOS7ではidentifierForVendor、iOS6などではMACアドレスのhashということでなんか微妙な感じ。
identifierForVendorは同じベンダーのアプリが1つでもインストールされていれば変化しないけど
そのベンダーのアプリ全部削除すると、再度インストールするときには変化する。
あと、iOS6.0のidentifierForVendorではバグがあるとか。

今回欲しいのは、不変の端末IDではなくインストールのたびに変わるユニークIDだったので
下記のように.NETの機能を使うと良いみたい。
System.Guid guid=System.Guid.NewGuid();
string 
_uuid=guid.ToString();
36バイトの文字列が生成されます。

初回起動時に生成した文字列をローカルに保存しておきたいわけですが
PlayerPrefsクラスを使います。
//セーブする時
PlayerPrefs.SetString("uuid",_uuid);
PlayerPrefs.Save();
//ロードする時
string _uuid=PlayerPrefs.GetString("uuid");

iOSの場合、PlayerPrefsは /Library/Preferences に保存されるそうなので
iTunesのバックアップ対象になるはず。

【Unity】iOS Proとアンチエイリアス

  • 投稿日:
  • by
  • カテゴリ:
iPhoneでAntialiasing (PostEffect)を使いたい時
Unity Pro版だけでは効かず、iOS Proアドオンを買ったら反映された。

あと、AndroidでAnti Aliasing が効かないのはUnity 4.3.2のバグかな。
まだAndroid Proアドオンを買ってないからかもしれない。
追記:Android Proアドオン買ったら有効になりました。

カメラにPostEffect Scriptを付ける以外に
メニュー(Edit→Project Settings→Quality)のAnti Aliasing設定もあるけど
スマホには効かないっぽい。

【Unity】ジャイロでスマホの傾き取得

  • 投稿日:
  • by
  • カテゴリ:
放置ブログにたまに投稿してみる。
最近はUnityでスマホアプリを作ったりしてます。

で、デバイスを「どっちに傾けたか」知りたい時どうするのかなと調べてみると
ジャイロセンサーの Input.gyro.attitude を使うとか
加速度センサー Input.acceleration で済ませるとかあるみたいですが
結論としては Input.gyro.rotationRateUnbiased ã‚’使うのが良さげでした。

Input.gyro.rotationRateUnbiasedは、XYZ各軸の回転速度がVector3型で返ってきます。
デバイスを奥に倒すとXがマイナス、手前に傾けるとXがプラス、
左に向けるとYがマイナス、右に向けるとYがプラス、
時計周りにするとZがマイナス、反時計回りだとZがプラス、という感じです。
速度なので動かすのをやめると値は0に近づきます。

Input.gyro.attitude はデバイスの姿勢をクォータニオンで返すので、たとえば
デバイスの傾きと床オブジェクトの傾きが連動する玉転がしゲームとかの用途向き。
寝転んだ状態での操作をやろうとするには難しい。

Input.acceleration はシェイクジェスチャーとかの用途向き。
常に重力加速がかかってるからそれを元に傾きを求められなくはないけど
余計な動きが加わると値が荒ぶりそう。

ドライブのおともに「道の駅マップ」

  • 投稿日:
  • by
  • カテゴリ:
iPhone/iPadアプリ「道の駅マップ」をリリースしました。 ニッチなところを攻めていきますよ。