2015年11月6日金曜日

Swift2 + APNsPHP でRemote Notification する時のメモ (バッジを増やしたりする)

なんか、あんまり日本語の解説が少ないのでメモ。
てか、手元にMacがないので記憶から書く羽目になりますが。

下準備 ( 認証キーだのなんだのの事 )

→ENTRUST からダウンロードしてくるやつだとなんかうまく動かなかったので、
 自分で .p12 作ってから .pem 作らなきゃだめです。
 キーチェーンアクセス?で右クリックから .p12 が作れなくて .pem が直接作れちゃう時は、
 左下の「自分の証明書」だかを選んで、その中で右クリックすると .p12 作れます。
 兎に角、ターミナルで openssl して、
 cert と key が合っててapple のpush のサーバに接続できるか、
 ちゃんと確認しましょうね。
 あと、ProvisioningFile?をちゃんと設定して書きだしても、
 なんか勝手に設定が変わっていることがあるので、
 build 時にエラーになる場合は、developer center で確認しましょう。

アプリの設定をする

→Capabilitiesを開いて、プッシュを有効に、
 バックグラウンドを有効にして、
 バックグラウンドと通知をオンにしましょう。


アプリ側のコードを書くとき

→プッシュ関連はAppDelegateに書いていきます。
 Viewの方に書くことはない気がする。
 全体的な流れは、
 application(...didFinishLaunchingWithOptions...)で、
 アプリの初期化時にプッシュのアクションのidentifyとか、
 カテゴリのidentifyとか
 バッジ・音・バイブの設定とかを設定させて、
 application(...didRegisterForRemoteNotificationsWithDeviceToken...)に、
 トークンを貰った時の処理を書きます(大概の人はサーバに送ると思う)。

 application(...didReceiveRemoteNotification...) で
 通知自体が端末に届いた瞬間の処理を切り分けさせます。
 通知が届いたときに、アプリがForegroundにあるかInactiveか、
 はたまたBackgroundにあるかが大事なのですが、
 バッジの値を増やす時は、
 UIApplicationState.Background で、バッジの値を増やす処理をさせます。
 Swift1.x では UIApplicationStateBackground だったみたいですが、
 Swift2 で UIApplicationState.Background に書き方が変わったみたいです。

 バッジを消す時は、applicationWillEnterForeground() か
 applicationDidBecomeActive()のどっちかでやりました。
 どっちでやったか忘れた。お前の記憶ガバガバじゃねぇかよ。

 で、通知をタップした時の処理を
 application(handleActionWithIdentifier...forRemoteNotification...completionHandler)で、
 設定したアクションごとに処理させます。

サーバ側のコードを書くとき(APNsPHPの場合)


→基本的にはみんなが知ってるサンプルのコードを書けばよいと思いますが、
 重要なのは、
 $mes->setCategory("HOGEHUGA")
 で、カテゴリのidentifyと同じ値を設定してやることと、
 $mes->setContentAvailable(true)
 で、バックグラウンド時の受け取り(Silent Push? Silent Notification?)も
 有効にしてあげることです。

大体ハマりどころ(ハマりどころさん?!マズいですよ…)はこんな感じすかね。
言語、仕様。(Azにゃん)の変更がガバガバだからね。しょうがないね。
赤い文字との戦いだってそれ一番言われてるから。

以下参考サイト

下準備 (公開鍵の作成とか)
 http://d.hatena.ne.jp/samril/20130902/1378198909

アプリの設定 (Capablities)
 http://dev.classmethod.jp/references/ios-background-fetch/

単純にプッシュ通知だけやる場合(gistにコードもあって…いいケツしてますねぇ…(ONDISK))
 http://qiita.com/sawapi/items/feba100851de47fbe412

複数アクションのプッシュ通知(Objective-CとSwift1どっちも書いてて、涙が、で、出ますよ…)
 http://qiita.com/Night___/items/7ff61699c443f2d9a117

2015年11月1日日曜日

.xps -> Blender -> .pmx

メモ

.xps -> Blender
http://johnzero7.deviantart.com/journal/Blender-2-7-XPS-Tools-475948475

Blender -> .pmx
http://www.nicovideo.jp/watch/sm26394132

昔はBlenderから .pmx にする為には、
一旦 .x 形式にしなきゃだめだったんだけど、
一発で .pmx に出来るようになった?みたい。
動画を見たけど相当凄いことになってる。

ちょっと色々やってみるかなぁ?どうしようかなぁ。
時間がないから無理だな、うん。覚書。メモ。

2015年9月26日土曜日

[javascript][gyrosensor] html5 でジャイロセンサーをいじくる。

休みの朝の小一時間のプログラミング。
javascript で、ジャイロセンサー(傾きセンサー) も触れるみたいすね。

http://ics-web.jp/lab/archives/4095

html5 の navigator.geolocation の heading が端末によって?取れねーと思ってて、
どうやって解決しましょということで、触ってみました。

http://www.psychedesire.org/sample/test_gyro.html

スマホのブラウザ(Android Chrome or Android Firefox)で開いてみてください。
で、押してみるってボタンを押すと、
なんか、テキストボックスが傾きによって動くと思います。

で、ほげもん豪にこれを組み込みました。

http://www.psychedesire.org/sample/test_hoge_a3.html


http://www.psychedesire.org/sample/test_hoge_a4.html

例によってAndroid の Firefox のみで動作確認。
右上の緑ニコチャンを押して緑の四角を表示させると、
緑の四角が傾きによって動くと思います。
これ、結構THREE.js の視野角と、
実際のスマホのジャイロセンサーの傾き角度の感覚を、
人間の体感感覚に合わせる調整が必要ですね。
一応、既に調整はしてあります。

http://www.psychedesire.org/sample/script/GPS.js

の28行目と29行目の0.1とかかけてあるところですね。
あと、回転角の符号反転をしないと、
自分のスマホの傾きと、
画面上のオブジェクトの見え方が一致しなくなります。

地球が丸いという事実に合わせて、
色々と修正しまくっているので、
その都度 GPS.js を観察してくださいw
この辺にやり方書いてあった。

http://stackoverflow.com/questions/28365948/javascript-latitude-longitude-to-xyz-on-sphere-three-js

2015年9月21日月曜日

ポケモンGO 的なもの?を WEBブラウザだけで作ってみてるんだけども

はい。進捗報告です。まだまだできてません。
が、まぁまぁ形は見えてきてるんですけども。
こちらから試せます。

http://www.psychedesire.org/sample/test_hoge_a2.html

Android 版の Firefox でしかまだ動いてません。多分。
Android 版の Chrome はダメっぽいのは直してません。
直るのかもわからん。調べてない。後回し。
カメラ許可とGPS許可が必要です。

なんか次へ次へすると、カメラの画面が起動すると思うんですけど、
その画面に行ったら、右上のニコちゃんマークを押してください。
そしたら、アラートが出て、緑色の四角が出てくると思うんですけども、
それがモンスターの代わりです。

その状態でうろうろすると、多分、緑の四角が画面から消えます。
今んとこはそこまで。
右下のセンサーが赤くなったり、攻撃出来たり、
ちゃんとしたモンスターが表示されたりってのは、まだまだって感じ。

で、まぁ、問題は、スマホの向きですね。方角です。
これ、navigator.geolocation で取れたり取れなかったりします。
端末の問題なのかなんなのかはわかりません。

Ingress でも、自分は北を向いてるのに、
緑の三角(自分)はわけわかんない方角向いてるって経験、
ないでしょうかね?私はしょっちゅうです。
Ingress では『位置』が大事で、
『どの方角を向いているか』はゲームの本質に関わるようなもんじゃないので、
なんか方角が違う気持ち悪さはあっても、そこまで気になりませんでしたけど、

ポケモンGOが、こういう、
実際のカメラ画面上にモンスターが表示されるゲームだ、
仮定した場合は、やばいっすね。

ポケモンのいる方を向いているはずなのに、ポケモンが画面に表示されなくなります。

まぁ、どんなゲームなのか、わかりませんけどね。
上記仮定にあるようなゲームであった場合、
ポケモンGOPLUS?が、
その辺のGPS位置情報(主に方角)補正機能も兼ねるのかも知れませんし。


2015年9月16日水曜日

[virtualbox][genymotion]起動させる

動いたわ。
てか、自分のパソコンぶっ壊れて、
おふくろのパソコン曲がり中なんだけど、
VirtualBox入れたらネット繋がらなくなって焦った。
まぁ、ルータのISP接続し直したら直ったんだけども。

で、まぁ、Virtualbox入れる所は、どうでもいいと。
で、genymotion をインストールするのもどうでもいいと。

ただ、genymotion で適当な Android 端末を作って起動させようとしたら、
VT-x is not available.
だかのなんちゃら言うエラーが出る。
調べてみると、アクセラレーションの設定を、
ホストのPC(おふくろのパソコン)のBIOSをいじるか、
VirutualBox のアクセラレーションの設定をいじるか、
みたいな感じみたいなんだけど、
おふくろのパソコンのBIOS見ても、そんな項目がない。
VirtualBox 上のマシン(Android 端末)の設定→システム→アクセラレーションのタブが、
選択不可になっていて変更できない。

VirtualBox 上のマシンを右クリック→エクスプローラを表示で出てくるフォルダの中の、
[Android端末名].vbox や[Android端末名].vbox-pref の中を、
この記事みたいに書き換えてもダメ。

で、どうしたもんかわからないから、
『アクセラレーションが有効ならなんでもいいんだろ!』
ってことで、
VirtualBox 上のマシンの設定→ディスプレイ→3Dアクセラレーションを有効化に
チェックを入れたら、起動した。
その下の 2Dビデオアクセラレーションを有効化 もチェックしたら、
俺の環境(てか、おふくろのパソコン)だと無効な設定ですって怒られて、
勝手にチェック外されました。
 
爆速!という触れ込みに違わず、速い。これは凄い。

2015年9月15日火曜日

ポケモンGO的なやつ

今日の叡王戦の鈴木大介先生はシュークリーム一杯食べてたと思う。(81並感

ポケモンGO的なやつは全然進んでおりません。
寝る時間は惜しむタイプです。
変な時間に目覚めたら書きますよー書く書く。

http://www.psychedesire.org/sample/test_gps2.html

スマホはFirefoxでしかチェックしてません。
PCだと画面サイズがフルのとこにカメラが表示されるから
ウィンドウサイズでかいと大変なことになると思います。

1・なんでスマホのChromeだと動かないのか調べる
 (URL 作るとこか createObject() が独特なんじゃないか説。調べる。)
2・ウィンドウサイズを変えたらリサイズするようにする。

[Appcelerator Studio] sh.exe titanium command not found の時の対処。

ほい。なんかこれTitaniumStudioの時もやらなかったか?
まぁいいか。
まぁ、ここに書いてあるけど、英語が嫌な人向け。


まずは、Appcelerator Studio コマンドプロンプトを開く。
まぁ、ツールバーみたいなとこにある如何にもコンソールが開きそうな黒いアイコンを押す。

npm 使うので、前提として node.js がインストールされてるか確認のコマンド

$ node -v

する。バージョンが表示されたらOK。

で、

$ npm install -g titanium

する。ごばーと出てくる。
で、なんかコンソールの表示が変になるかも知れないけど完成。多分。

テストで、

$ti config

もしくは

$titanium config

ってやって、
設定がどばーと表示されたら大丈夫。

$ ti config android.emulatorStartTimeout 600000

とかやったらいいとこちらに書いてありました。
それでもエミュレータ起動しないんで Genymotion インスコ中。
ここら辺が詳しいっぽい