はじめ
タイトル通り、プッシュ通知を送信することができるPython2,3対応のDjangoプラグインを作成しました。
現段階では、まだα版としてのリリースをしています。(パッケージ名かぶりが怖いからとりあえず拾っておいた)
現状探すと一応あるんですが、Python2のみの対応とかで...
PyPIページ
GitHubリポジトリ
GitHubリポジトリの master
ブランチはいつマージしようかと迷っているので気分でマージします。
αリリースしているブランチは develop
のソースコードをいじっている最新のモノです。
サポート
使い方
インストール
$ pip install ios-notification
ios-notification
をインストールすると自動的に Django==1.11.1
がインストールされますが、気が向いたら修正しておきます。
Djangoプロジェクトに反映
# Djangoプロジェクト作成から $ django-admin.py startproject sample $ cd sample/
sample/settings.py
と sample/urls.py
を編集
sample/settings.py
INSTALLED_APPS += ( 'notification', )
sample/urls.py
from django.conf.urls import include urlpatterns += ( url(r'^ios/', include('notification.urls', namespace='notification')), )
マイグレーション等
$ python manage.py migrate $ python manage.py createsuperuser # パッケージ内でのsuperuserを必要とするため
実行
$ python manage.py runserver
ルーティング
BASE_URL: http://127.0.0.1:8000/ios
/receive
/send/<TARGET_MODE>/<DEVICE_TOKEN>
/cert_upload
/login
/logout
/receive
- PUTメソッド
- Content-Type: application/json
- Model:
notification.models.DeviceToken
- リクエスト成功:
{"result": "success"}
- リクエスト失敗(パラメータ不足):
{"error": "Bad Request"}
サンプルJSON
{ "device_token": "8a0d7cba3ffad34bd3dcb37728080a95d6ee78a83a68ead033614acbab9b7e76", "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" }
notification.models.DeviceToken
には user
フィールドがあるので django.contrib.auth.models.User
を適用してユーザを紐付けることもできます。
/send/<TARGET_MODE>/<DEVICE_TOKEN>
- GETメソッド
- TARGET_MODE
- Development:
0
- Distribution:
1
- Development:
- DEVICE_TOKEN: 保存されているデバイストークン
- パラメータ: message (not require)
- 送信成功:
Successful sending.
- 送信失敗:
Not found. Your device token.
サンプルURL
Development環境にプッシュ通知を送信する(use_sandbox)
http://127.0.0.1:8000/send/0/8a0d7cba3ffad34bd3dcb37728080a95d6ee78a83a68ead033614acbab9b7e76?message=配信!!
Distribution環境にプッシュ通知を送信する
http://127.0.0.1:8000/send/1/8a0d7cba3ffad34bd3dcb37728080a95d6ee78a83a68ead033614acbab9b7e76
/cert_upload
- GET, POSTメソッド
- Access by superuser
- 鍵のかかっていないPEMファイル
- 二重譲渡などがされていない安全なPEMファイル
/login
- ログインURL
/logout
- ログアウトURL
今後の予定
カスタムコマンドを作成して複数端末に同時に送信できるようにするなどの対応
最後に
クソコード実装なのでなにかあればIssue, PR等作成していただければと思います。
/send
に関しては一度中身を見直したほうが良いのかなと言った印象。