関モバ #13で発表してきました。
前回に懲りず、関モバで発表してきました。
発表について
以前からアレコレ試していたBLEと違い、一から調べた所が多かったので、一時はどうなる事かと汗
特にGCMの送受信が上手くいかなかったときは本当に(´ . .̫ . `)
あとやっぱり予行演習より本番の方が、大分喋るのが早くなりますね(・ัω・ั)
前回(トラブルがあったとはいえ)話自体はかなり早く終わってしまったので、今回五分超えるぐらいに調整したのですが、時間内に収まってしまいました(多分)。
あまり早口になると聞きづらいでしょうし、もう少し落ち着いて話したいところ。
補足
5分にまとめる必要があったとはいえ、だいぶ端折った部分もあるのでその辺の補足を。
- サンプルがJAVAではなくKotlinだったのは、その方がコード量が少なくなるかな?と思ってのことです(4月頭に勉強会に参加したこともありますが)。
- GCMの受信側のアプリでTokenを取る場合、ネットワークに接続していないとエラーが発生します。そのためNetworkInfoで接続を確認した上でGetTokenを実行した方が良いかと
(サンプルはJobSchedulerでネットワーク接続を確認する機能も付ける予定)。
RegistrationIntentService.kt
var connectivityManager: ConnectivityManager? = applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager var networkInfo = connectivityManager?.activeNetworkInfo // ネットワークに接続されていればTokenを取得 if(networkInfo != null && networkInfo.isConnected){ var instanceID = InstanceID.getInstance(this); var token: String = instanceID.getToken(getString(R.string.google_app_id), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); // 取得したTokenをServer側に渡し、それを元にMessageを送信する. Log.i("WUA", "GCM Registration Token: " + token); }
- 送信側のコードにRubyを使ったのは、丁度良いGemがあったということも大きいですが、和歌山市でほとんど唯一の勉強会と言える?和歌山rbに、最近参加できていないのでその罪滅ぼしという意味も汗
- Dozeモードの確認はadbを使うと良いです(参照: Android Marshmallow の Doze テストの正しい手順 - Qiita)。
次回
今回自分なりに調べたつもりではありましたが、漏れもいっぱいあったのかなぁ、とも感じています。
次回はDozeモードを含めて省エネという文脈でもう少し試してみようかな、と思います。
勉強会のメモ
今回ラップトップのバッテリー的な原因で、他の方の発表を聞いた時のメモはノートに書き残していました。
これ結構良いかもしれません。基本的に皆さま資料は公開してくれるし、好きな場所に書き込めるのでPCでメモ取るより速い気がします。
欠点はTwitterの流れを追いかけるのが億劫になりがちなことでしょうかw
最後に
関モバ主催の皆さま、会場提供をはじめスポンサーとなって下さったYahoo! JAPANの皆さま、そして私の拙い発表を聞いて下さった皆さま、ありがとうございましたm( )m
追記
屋外でプログラミングするのは、思った以上に画面の反射がキツく、大変でした汗
【悲報】半休とって、よ~しパパ、今日使うサンプルを更新しちゃうぞ!と意気込んだものの、反射光がキツくて画面が見えない(屋外)
— MasuiMasanori(山寨版) (@masanori_msl) 2016年4月26日
ディスプレイの保護膜を変えたらもう少しマシになるかな?
あと、テザリングしながらPCを使うと、そうでない時よりだいぶバッテリーが持たないことも今回学んだことの一つですね汗