LoginSignup
21
21

More than 5 years have passed since last update.

MattermostでiOS/Androidクライアントにpush通知

Posted at

宗教上の理由でAndroid端末を持っていなかったのですが、Kindle Fire(第5世代)が手に入りましたので、push通知を確認してみました。
公式ドキュメントの記述も結構分散しているので、簡単にまとめておきます。

需要があるか正直わかりませんが、皆様の世知辛いMattermost生活の一助になれば幸いです。

はじめに

Mattermost(v2.1.0)のpush通知は以下の2パターンを想定しているようです。
http://docs.mattermost.com/deployment/push.html#configuration-options-for-push-notifications

A. 自分でビルドしたiOS/Androidアプリと、自分で設置したpush通知サーバ(push-proxy)を利用

  1. iOS端末
    1. APNs証明書を取得
    2. 1.を使ってpush通知が使えるようにmattermost/iosをビルド
    3. iOS端末に配布/インストール
  2. Android端末
    1. Google Cloud ConsoleからGoogle Cloud Messaging(GCM)のAPIキーを取得
    2. 1.を使ってpush通知が使えるようにmattermost/androidをビルド
    3. Android端末に配布/インストール
  3. push通知サーバ(push-proxy)
    1. サーバを用意し、mattermost/push-proxyをダウンロード
    2. config/config-push-proxy.jsonにAPNsの証明書/AndroidのAPIキーを設定
    3. 起動、動作確認

正直かなりハードルが高いと感じたので、今回はこちらの方法では確認しておりません。
ネイティブアプリ関係の開発をされていて興味がある方、ぜひ試してみて知見を共有いただければ…

:thumbsup: メリット

  • 基本料金無料
  • Mattermost本体/push通知サーバ/各ネイティブアプリ のバージョンを完全にコントロールできる
    • Mattermostのように若いプロダクトの場合、特に魅力的かもしれません

:thumbsdown: デメリット

  • ネイティブアプリのビルド、および配布作業が大変
    • iOS/Androidをソースコードからビルドできる技術と、push通知関係についても充分な知識が必要
      • 僕はこっち側がさっぱりなので諦めました…
      • アプリ開発をメインでやっていて、既に環境がそろっているとかでないと正直厳しいのでは…
    • iOS端末で利用する場合、APNs証明書の取得にAppleへのお布施(Apple Developer Networkへの加入)が必要なので、完全無料にはならない
  • push通知サーバ(mattermost-proxy)の管理も必要
    • Mattermostサーバをverupした場合、 通知サーバ(mattermost-proxy)もあわせてverupする必要がある
    • ある程度後方互換はありそうなんですが、まだ若いプロダクトなのでなんとも…

B. 公式から提供されているiOS/Androidアプリと、公式の提供するpush通知サービス(MHPNS)を利用

A.の1~3を、Mattermost公式が提供しているものを利用して代替する方法です。

  1. iOS端末
  2. Android端末
  3. push通知サーバ

:thumbsup: メリット

    • push通知用サーバのセットアップやバージョン管理をしなくていい
    • 各ネイティブアプリのビルドやバージョン管理をしなくていい(ストア経由で自動更新できる)

:thumbsdown: デメリット

  • 無課金厨に不評(世知辛い)
  • MHPNSの値段がいくらなのかわからない
    • MLに加入しないとわからない? ので確認するのも二の足踏んでしまいました…
      • お仕事で利用される方は、ぜひ知見を展開いただきたく…
      • というか本当に商用ローンチされてるのかな…
  • MHPNSがMattermostの最新版にしか対応しない方針の場合、運用しているMattermostのバージョンを常に最新に保つ必要がある
    • Mattermostのリリーススケジュールが毎月16日で更新もかなり活発なので、追従するとなると結構大変かも…

というわけで、本記事では B. の方法で確認していきます。
ちなみに、Mattermostサーバ自体は直接インターネットからアクセスできない環境でも問題ありません。

確認手順

事前準備

Mattermostサーバは terukizm/mattermost-vagrant を利用して構築したものです。

仮想マシン上で動いているので、以下のようにして

Vagrantfile
config.vm.network "forwarded_port", guest: 80, host: 38080

WiFi接続してあるiOS/Android端末から、LAN経由でアクセスできるようにしてあります。

Mattermostサーバ

ブラウザ経由で以下の作業を行っておきます。

  1. teamを作成、teamURLをメモ
  2. push通知テスト用のchannelを作成(「テストPush通知部屋」)
  3. ios用アカウント(@iosnative)、android用アカウントを作成(@android)

iOS端末

au iPhone 6S(iOS 9.2.1)で確認。
Apple Store経由でMattermostクライアントを導入。

Android端末

Kindle Fire(Android 5.1.1)で確認。
Play Store経由でMattermostクライアントを導入。

作業手順

1. Mattermostサーバにpush通知の設定を行う

「System Console」 → 「Email Settings」 から以下のように設定します。

  • 「Send Push Notifications」: true
  • 「Push Notification Server」 : http://push-test.mattermost.com
    • 確認用に用意されているサーバなので叩き過ぎると怒られるかもしれません… テスト時はご配慮ください…

2. 各端末からログイン

  1. teamURL、アカウント名/パスワードを入力してログイン
  2. Mattermostクライアントを終了 1
  3. 5分待つ 2

特に 太字部分 に気をつけてください。ドキュメントに書いてあったのですが、完全に読み飛ばしていてハマりました…

3. 各端末のアカウントに向けてDirect Messageを送る

他のユーザ3からDirectMessageを送信します。このDM以後、push通知が行われるようになるみたいです。

こんな感じで通知がくればOK。 4

Androidの場合はこんな感じ。

4. 各端末のアカウントに向けてReplyを送る

ここでは「テストPush通知部屋」の中からReplyを送ってみます。

こんな感じで通知がくればOKです。


遅延についてはほとんど感じられず、ほぼリアルタイムで通知されている印象でした。

メッセージの中身が表示されないのは、閉じた環境から使われることを想定し、情報が流出しないように、という配慮なんですかね。 5
実際の内容はアプリを起動して確認する感じになります。

以上、皆様の世知辛く充実したMattermost生活に潤いがもたらされることを、心よりお祈り申し上げます。



  1. 端末からのMattermostサーバへの接続が生きているとpush通知が飛んでこないようです。(バックグラウンドでアプリが起動していたり、モバイルブラウザからログインしているとNG) 

  2. ログイン時に端末IDをNotification Serverにひも付けており、そのタスクが5分毎で処理されているとかなんですかね。 

  3. ここではたまたまrootを使っていますが、Admin権限のユーザである必要はありません。 

  4. スクリーンショットが取りづらかったので通知形式は変更してあります。デフォルトはバナー方式です。 

  5. Mattermostからpush通知サーバへのリクエストにメッセージの内容は含まれない仕様なのではないかと思います。ソースコード読んだわけではないので、実際にお仕事で使われる場合はあらかじめご確認ください。 

21
21
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21