読者です 読者をやめる 読者になる 読者になる

kiriya-systemの日記

きりやシステム技術ブログ http://www.kiriya-system.com/

unityでAmazonSNS経由でFCM使ってPUSH通知しようとしたら激ハマリしたでござるの巻 ログを見よう編

試行錯誤の中で参考にしたログなど。

 

Unity側登録時のRegID(registration Id)の確認

regIDの確認は実機デバッグで確認した。

サンプルのGCM.csの116行目、regIDこれが空でうまく取得できていなかった。

 

実機をデバッグモードでつなぎ、VisualStudioCommunity2015を起動し、

Debug->Attach Unity Debuggerを選択

machineにつないだデバイスが表示される。このときややタイムラグがあるのでやや注意。

慌てず待つべし。

 

RegIDがNULLの場合、FCM(GCM)周りの設定が間違ってないか確認すべし

 

AmazonSNS側のログ

AmazonSNSkのコンソールから

Applications->ARNを選択->Platform Application action->Delivery status

Create IAM rolesを選択

 

IAM roleを作成し、設定を保存すると、配信後

Cloud watch のログから配信ステータスを確認できるようになる。

 

参考

[Amazon SNS] 配送ステータスが CloudWatch で確認できるようになりました! | Developers.IO

 

端末側確認

通知が端末まで来ているものの、androidmanifestが間違ってると、

何も表示されない。

 

コマンドラインからadb logcatで端末のログを確認

V/NotificationService(  774): pkg=pkg.hogehoge.com canInterrupt=false intercept=true

 

こんな感じでログが出ていれば端末までは届いている

その後にActivity見つからないよとかIntentないよとか言われている場合は

AndroidManifestを確認すべし

 

実際、GCMBroadcastReceiver

GCMが大文字なのに"Gcm"と書いてて引っかかった・・・まぁ、探すの大変だった・・・

 

ステータスバーの通知を押してもIntentが起動しない

こちらもAndroidManifestの問題だった。

サンプルのAndroidManifestではUnityPlayerNativeActivityのみ記載があるがこれではだめ。

UnityPlayerProxyActivity、UnityPlayerActivityなども追記したら動いた。

このへんはUnity側のバージョンアップと関係していそう。

 

タイトル変えられない

Java側ソースを見ると

unityでAmazonSNS経由でFCM使ってPUSH通知しようとしたら激ハマリしたでござるの巻 下準備編

AmazonSNSにはUnity用のプラグインもあるので簡単かと思ったら、

結構、面倒くさかったでござる。

 

GoogleのPush通知は最近、GCMから新しくなりFCMと名前が変わっている。

このへんの事情で勘違いした部分もあり、時間かかってしまった。

基本的にはGCMと下位互換あるらしい。

 

下記、ドキュメントを参考に進める。

AWS Mobile SDK for Unity — Unity Developer Guide

 

接続サンプルがあるのでこれを入れる。

GitHub - awslabs/aws-sdk-unity-samples: This repository has samples that demonstrate various aspects of the AWS Mobile SDK for Unity, you can get the SDK source on Github (https://github.com/aws/aws-sdk-net)

 

・ FCM設定

下記参照

チュートリアル (Android) : mobile backendとFCMの連携に必要な設定 | ニフティクラウド mobile backend

 

送信者 IDをUnity側サンプルのGoogle console projectIDに設定する。

f:id:kiriya-system:20161014140045p:plain

f:id:kiriya-system:20161014140623p:plain

 

FCM(Firebase console)のServerKeyをamazon snsのCreate Platform applicationのAPI KEYに設定する。

 

f:id:kiriya-system:20161014141120p:plain

作成した後、Application ARNを

UnityのAndroid Platform Application ARNに設定する。

 

・Cognitoを設定する

下記、参考に

AWS CLIをAmazon Cognito(UnAuth)で認証して使用する | Developers.IO

f:id:kiriya-system:20161014142526p:plain

MnageFederatedIdentitiesから新規作成する。

cognito側Identity Pool IDをUnity側のIdentity Pool IDに設定する。

IAM(Identity and Access Management)で

できたIAMロールに対して、AmazonSNSFullAccess をアタッチする。

 

 

サンプルを起動し登録ボタンを押すと、amazonSNS側に

Applications->ARNクリック

EndpointsにEndpointが増えているはず。

publich to endpointで通知できる

macの/homeにディレクトリ作成

macで開発環境を作ろうとして、/home以下にmkdirでディレクトリを作ろうとしたところ、

下記のようなメッセージが表示された。

 

Operation not supported

 

下記に対策が書かれていた。

https://discussions.apple.com/thread/2138336?tstart=0

 

原因は

/etc/auto_masterの

home                  auto_home       -nobrowse,hidefromfinder

 この部分、この一行をコメントアウトし、再起動したら

作成できるようになった。

 

悪影響や副作用は不明・・・

fuelphpのscafold使ってみたら、migrationでtable doesn't existが出たの巻

fuelphpのmigrationでtable doesn't existが出る

scafoldを試そうとして、下記を実行したらエラーになった。

oil refine migrate 

エラーは↓な感じ

Uncaught exception Fuel\Core\Database_Exception: Table 'hoge.migration' doesn't exist 

 

結局、原因はわからなかったが、手動でmigrationテーブルを作成したらうまくいった。

他の環境では新規のときに自動で作成してくれたのに・・・

 

CREATE TABLE IF NOT EXISTS `migration` (
  `type` varchar(25) NOT NULL,
  `name` varchar(50) NOT NULL,
  `migration` varchar(100) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

scafold自体はすげー便利。CMSなんかはこれで作ると捗りそう。

 

テンプレートも↓に入ってるので、カスタマイズするとさらに捗るはず。

\fuelphp\fuel\packages\oil\views\scaffolding

 

整数型はLongです。(MiniJson)

整数型はLongです。(MiniJson)

intにキャストしようとして、半日ハマってた・・・

 

http://neareal.net/index.php?ComputerGraphics%2FUnity%2FTips%2FJSON%2FMiniJSON

 

int型はlong型としてあつかわれる

int型はlong型としてあつかわれる

int型はlong型としてあつかわれる

 

 

 

みんなマニュアル/記事はよく読もうな!!!

ansible-playbookでエラー

ansibleでエラーが出た

yumでansible本体を入れた後、

ansible-playbookを叩いたら下記エラーが出た。

 

Traceback (most recent call last):
  File "/usr/bin/ansible-playbook", line 22, in <module>
    import pkg_resources
ImportError: No module named pkg_resources

 

 

解決法は下記を参照しつつ、

http://ameblo.jp/g-pinchan-new/entry-11813410448.html

 

yum -y install python-setuptools

 で解決

 

はて、なんでansible本体と一緒に入れてくれんかったのか???

前はこんなエラー出なかったような・・・

openSSL脆弱性、検索と対策

openSSLに脆弱性が発見されました。

 

まずは検索

rpm -qa|grep ssl

 

OpenSSLの1.0.1から1.0.1fまで

↑が対象

※但し、Centosの場合はopenssl-1.0.1e-16.el6_5.7は対応済み

RPMで入れてない場合は表示されません。

 

yumで対応版が提供されてるようなのでアップデート

http://lists.centos.org/pipermail/centos-announce/2014-April/020249.html

 

https://rhn.redhat.com/errata/RHSA-2014-0376.html

 

yum update openssl

 

 念の為、サーバも再起動しておく。