Ccmmutty logo
Commutty IT
2
2 min read

PythonでExpo製React NativeにPush通知を打つバックエンドの実装

https://cdn.magicode.io/media/notebox/a25543d9-9811-4531-a874-89fedf668c99.jpeg

Expo製React NativeのPush通知のバックエンド部分が少し迷ったのでメモしておく

ExpoのPush通知の仕組みと手順

仕組み

端末ごとにExpoの通知トークンが存在する。モバイルアプリは、iOSなら許可された時(=オプトイン)、Androidなら拒否されない時(=オプトアウト)に取得できる。
例えばこんな感じ:ExponentPushToken[hogehogehogehogehogehoge] どうやらExponent...の部分も必要らしい

手順(かんたん2ステップ!)

ステップ 1

まずはフロントエンドでユーザーから手に入れたトークンをバックエンドに保存する。 フロントエンドについてはこの記事がわかりやすかった。

ステップ 2

バックエンドの好きな言語で、ExpoのAPIを叩く。素敵なAPIで、通知対象がiOSかAndoridかに関わらず叩くだけでいい。うまくラップしてくれていてありがたい。 
では実際のコードが以下である。
python
import requests
import json

expo_push_url = "https://exp.host/--/api/v2/push/send"

push_token = "ExponentPushToken[9e_gS5IRxODynpC9SfJxHx]"

message = "ここに私へのメッセージをくださいw"

payload = {
    "to": push_token,
    "title":"Push通知のタイトル!!!", 
    "body": message
  }

res = requests.post(
        expo_push_url,
        json.dumps(payload),
        headers={'Content-Type': 'application/json'})
print(res.text)
print(f"筆者に「{message}」とプッシュ通知を送りました。")

{"data":{"status":"ok","id":"40968d26-5cb6-4d80-9bad-22aa9e350934"}} 筆者に「ここに私へのメッセージをくださいw」とプッシュ通知を送りました。

Discussion

コメントにはログインが必要です。