Parse.comのプッシュ通知がおかしい

あるアプリ(iPhone, Android)で来年早々終了するParseを使ってプッシュ通知を実装しています。

昨日から1日に1回1500人程度、最大8回ぐらいプッシュ通知を送っています。不定期ですが、プッシュ通知はだいたいうまく動作していたのですが、昨日はiPhoneだけ全く通知されない事象が2回ありました。

自前のサーバーからParse提供のAPIを使って送信指示を出しているのですが、うまくいくときと、いかないときがあります。そのため、2回目の不通知が発生したときに、ParseのConsoleから直接送ってみたところ、うまく行きました。

今まで実績があって動いていたのに解せないです。約半年でなくなるサービスなので仕方ないかもしれないですけど、ちょっと勘弁ですね。。。

Firebae FCMに既存のAPNs tokenを移行できる(かも)

Parse.comの移行先として、Firebaseを検討しています。

Firebaseは色んな機能があり魅力的なのですが、Parseにあるデバイストークンを移行できないって聞いていたので、残念に思ってました。

しかし、Firebaseのドキュメントを漁っていたところ、デバイストークンをインポートできそうな機能を見つけました。 Server Reference  |  Instance ID  |  Google Developers

ちなみに未検証です。Androidのトークンも移行できそう。

FirebaseのFCM(プッシュ通知)をcurlで実行してもiPhoneアプリにNotificationがでない

FCM Server経由でiPhoneアプリAndroidアプリにtopicを利用したpush通知を送りたくて、curlで確認したところかなりハマってしまったのでメモとして残しておきます。

前提として、両アプリともFirebase Cloud Messaging(FCM)を組み込んでいて、Firebase ConsoleからNotificationsが送れるものとします。

Androidアプリはさすがにすんなり動作したのですが、iPhoneアプリは半日ぐらい悩みました。。。

以下が動作したパターンです。

 curl --header "Authorization: key=$api_key" \
     --header Content-Type:"application/json" \
     https://fcm.googleapis.com/fcm/send \
     -d "{\"to\": \"/topics/info\",\"priority\":\"high\",\"content_available\":true,\"notification\": {\"body\": \"お知らせ\",\"badge\": \"1\"}}"

私の間違ったポイントは以下です。 * api_keyはFirebase Settings -> CLOUD MESSAGING -> Server key を利用する。でないと認証で失敗する。 * priorityをhighにする (iPhoneで必要) * content_availableをtrueする (最終的に必要かどうか分からない) * notificationにbodyを指定する(これがないとiPhoneに表示されない。最後までハマった)

何かのお役に立てれば幸いです

XREAで海外からアクセスできなかったのは

XREA上で運用している2つのブログサイト(Wordpress)が、海外からアクセスできないでいました。

具体的には、以下のような感じです。

  • Facebookの記事内にリンクを貼ったら403が表示される。
  • Google Search Consoleに該当のブログを登録しようとすると、接続できないと言われる。

XREAは無料プランなので広告が入るなどは仕方ないですが、しかしこれには困ってしまい、有料プランに戻すか別のレンタルサーバーに移行するかを真剣に考えていました。

しかし、以前にもしたのですが、もう一度ダメ元でググった結果、「このような現象になる場合はサポートに報告して個別対応」というのを見つけました。そして、該当のサポートページに行きログインすると、半年以上前に私のWordpress(かなり古いバージョン)にセキュリティホールがあり、該当のPHPファイルと.htaccessに海外からのアクセスを禁止する設定をしたというメッセージが届いてました。

そう言えば、そんなメールが届いていたなぁと思い出し、該当の.htaccessを無効化したところ、もれなく上手く動作するようになりました。結局、自分がWordpressもメールも放置していたのが原因でした。

やはり、他人を疑う前に、まずは自分を疑わなければいけませんね。;-p