document

前回の続き。

MacでTitanium Studioを使ってのAndroid開発 ACSを使うまで - weiki (作業ログやそのまとめ) <http://www.goto.info.waseda.ac.jp/~wei/weiki/index.php?Mac%A4%C7Titanium%20Studio%A4%F2%BB%C8%A4%C3%A4%C6%A4%CEAndroid%B3%AB%C8%AF%A1%A1ACS%A4%F2%BB%C8%A4%A6%A4%DE%A4%C7>

今度は別のサーバーからACSにアクセスしてRESTでいろいろな処理命令を送る。

ACSをRESTで操作する

http://docs.appcelerator.com/cloud/latest/#!/guide/rest

を参考にするとACSを操作できる。

例:自分の作ったAPPのあるユーザーデータを取得する

curl --verbose -b cookies.txt -c cookies.txt -F "login=<USER_NAME>" -F "password=<USER_PASS>" https://api.cloud.appcelerator.com/v1/users/login.json?key=<YOUR APP APP KEY>
<YOUR APP APP KEY>:App Management画面に表示されているAPP KEY
<USER_NAME>:ACSのUsersに登録されてあるNAME (Titaniumの開発者IDではない)
<USER_NAME>:ACSのUsersに登録されてあるPASS (Titaniumの開発者PASSではない)

curlのオプション

--verbose -b cookies.txt -c cookies.txt

cがcookieを保存するオプションで、bが保存したcookieを使うオプション。--verboseは詳細出力:cURL - How To Use (マニュアルページ日本語訳) <http://www.hcn.zaq.ne.jp/___/unix/curl_manpage.html>

cookies.txtが保存されなかった場合ディレクトリのパーミションを変える必要がある。

ACSのRESTでpush_notificationを操作する

これが使いたかった。これができれば、別のサーバーからpush命令を送ることができる。

ACSのRESTは

https://api.cloud.appcelerator.com/v1/push_notification

のようにv1/以降がリソースになってて、push_notificationをkeyvaluesに変えることで、アクセスできる。

ユーザーがsubscribeしているPUSH用のchannelを取得する

PushNotifications? - Cloud - Appcelerator Docs <http://docs.appcelerator.com/cloud/latest/#!/api/PushNotifications-method-query>

情報を端末にPUSHするにはchannelパラメータが必須なので、
まずは、ユーザーがsubscribeしているchannelを特定する必要がある。

$ curl -b cookies.txt -c cookies.txt "https://api.cloud.appcelerator.com/v1/push_notification/query.json?key=<YOUR APP APP KEY>&user_id=4f5905b5d2951316a9000020"

このときのuser_idはuserを作ったときに自動的に割り振られるIDである

responseは下記のようなJSONになる。多分一度WEBからalertを送っていれば、channelにalertが追加されていると思う

.........
 "response": {
   "subscriptions": [
     {
       "id": "5204fcc64cd6620ade11fd13",
       "channel": [
         "alert"
       ],
......

RESTで実際にPUSHする

POST push_notification/notify.json <http://docs.appcelerator.com/cloud/latest/#!/api/PushNotifications-method-notify>

pushするには、ユーザーでログインするか(User Login Required: Yes)、ログインなしで機器トークンを指定して送る方法がある。ユーザーログインの方を試した。

1.users/login.jsonにアクセスしてcookiesを保存。(このページの先頭と同じコマンド)

curl --verbose -b cookies.txt -c cookies.txt -F "login=<USER_NAME>" -F "password=<USER_PASS>" https://api.cloud.appcelerator.com/v1/users/login.json?key=<YOUR APP APP KEY>

2.push_notification/notify.jsonにアクセス

curl -b cookies.txt -c cookies.txt -F "channel=alert"   -F "payload=test" "https://api.cloud.appcelerator.com/v1/push_notification/notify.json?key=<YOUR APP APP KEY>&user_id=<User_ID>"
"payload=test":payload=の後に指定した文字列がPUSHされる
<YOUR APP APP KEY>:App Management画面に表示されているAPP KEY
<User_ID>:認証に使ったuserのID(ACSのWEB管理画面で分かる)

ちなみに下記のメソッドが機器トークンを使って送る方法

PushNotifications? - Cloud - Appcelerator Docs <http://docs.appcelerator.com/cloud/latest/#!/api/PushNotifications-method-notify_tokens>


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-11-05 (火) 11:51:02 (1991d)