Repro - Mobile Analytics for growth
English
リソース
Growth Hack Journal
アカウント登録 管理画面に戻る
  • 動作環境
  • 管理画面ガイド
  • 開発ガイド
    • アカウント作成
    • iOS/Android SDK
    • Web
    • オーディエンスAPI
    • オーディエンスインポート(β)
    • プッシュAPI
      • はじめに
        • API エンドポイントとRepro API トークンの取得
      • API経由でプッシュ通知を配信する
        • 認証
        • 単位時間あたりのアクセス上限
      • APIフォーマット
        • 配信対象
        • メッセージ
          • スタンダード形式
          • カスタム (JSON)
        • 配信の予約
        • 例
          • 1人のユーザーにメッセージを配信する
          • 複数のユーザーにメッセージを配信する
          • カスタムペイロードを使う
        • cURLを使ってプッシュ通知を配信する
      • 管理画面から通知を配信する
      • プッシュAPIのリクエスト
      • プッシュAPIのレスポンス
        • 202 Accepted
        • 400 Bad Request
        • 401 Unauthorized
        • 403 Forbidden
        • 404 Not Found
        • 422 Unprocessable Entity
        • 413 Payload Too Large
        • 429 Too Many Requests
    • ユーザープロフィールAPI
    • ユーザープロフィールバルクインポートAPI
  • リリースノート
  • FAQ

プッシュAPI¶

プッシュAPIを使うと、プッシュ通知をReproの管理画面からではなく、自社サービスのサーバーや、アプリなどお好きなところから配信できます。

はじめに¶

プッシュAPIを使うには、APIエンドポイントとプッシュ通知用の Repro API トークンを生成する必要があります。

API エンドポイントとRepro API トークンの取得¶

  1. マーケティング > プッシュ通知 に行き、 新しいプッシュ通知を作成する をクリックしてください。
  2. デフォルトの本文を設定します。
  3. APIを利用して配信 を選択してください。必要な場合は負荷分散機能をご利用ください。
Select API Trigger
  1. プッシュ通知を保存してください。
  2. 次のページでAPIエンドポイントと Repro API トークンが発行されます。
Push API Token

API経由でプッシュ通知を配信する¶

プッシュAPIはHTTPの POST メソッドをうけつける単一のエンドポイントとひもづいています。

POST https://marketing.reproio.com/v1/push/<push_id>/deliver

警告

エンドポイントのドメインが repro.io から reproio.com に変更されます。 旧ドメインも引き続きご利用頂けますが、なるべく新しいドメインをご利用ください。

認証¶

取得した Repro API トークンをHTTPヘッダーの X-Repro-Token フィールドに設定してください。

単位時間あたりのアクセス上限¶

プッシュAPIには、単位時間当たりのアクセス制限があります。

  • アクセス上限設定値は、1分あたり1000件です。
  • リクエストが正常に完了すると、レスポンスの X-RateLimit-Limit ヘッダーに単位時間あたりのリクエスト上限回数が記載されます。
  • リクエスト数がアクセス上限数を超えると、 HTTP Status 429 (Too Many Requests) が返ります。

レスポンスヘッダーの詳細は プッシュAPIのレスポンス をご覧ください。

警告

アクセス上限設定値は予告なく変動する場合があります。

APIフォーマット¶

メッセージをHTTP bodyにJSONフォーマットでセットします。 メッセージは 3MB 以内となります。それ以上の場合は user_ids を分割して複数回リクエストを行なってください。ユーザーIDを15バイトとした場合、設定できるユーザー数の上限はおよそ20万件ほどになります。

{
  "audience": {
    "user_ids": [
      "user-1234"
    ]
  },
  "notification": {
    "message": "Hello!",
    "sound": "default.wav"
  }
}

配信対象¶

  • audience: 配信対象を指定します。
    • user_ids: アプリ内で ユーザーID APIを使って登録されたユーザーを配列で指定します。

メッセージ¶

  • notification:

    下記の スタンダード 、 カスタム (JSON) のいずれかを含めます。 フィールドが指定されていない場合、管理画面で作成したデフォルトのメッセージが配信されます。

スタンダード形式¶

  • message:

    通知メッセージの本文です。

  • deeplink_url:

    ディープリンクもしくはURLを設定すると、エンドユーザーが通知をタップしたときにそのアドレスをSDKが自動的に開きます。ディープリンクを指定した場合、アプリ内の特定のページを開きます(アプリ側の実装が必要です)。URLを指定した場合、ブラウザでWebページを開きます。未指定の場合は、アプリを通常起動します。

    • 文字列長
      • 最大: 255文字
  • sound:

    iOSアプリのサウンドファイルを指定します。ファイル名が指定されていない場合は、iOSのシステムサウンドが使われます。

カスタム (JSON)¶

  • custom_payload:

    JSON 文字列を String で指定する必要があります。

バッジやサイレントプッシュ通知、カスタムペイロードなど、デフォルトのメッセージでは対応していない内容のメッセージを配信する場合はカスタム (JSON) 形式を選択してください。

注釈

  • Android: カスタム (JSON) 形式のメッセージをアプリケーションで受信するには FirebaseMessagingServiceのonMessageReceivedを実装 する必要があります。

配信の予約¶

  • schedule: 配信時刻を指定します。 (optional)

    パラメータに時刻を指定することで、配信の予約を行うことができます。指定しない場合は即時に配信されます。 ISO8601 フォーマットに準拠した文字列のみセットできます。

    スケジュールに指定できるのは1ヶ月先までです。

    スケジュールの登録上限数は1時間あたり1000件です。この制限はAPIエンドポイントごとではなく、ひとつのアプリに設定されているすべてのAPIエンドポイント共通で適用されます。

{
  "audience": {
    "user_ids": [
      "user-1234"
    ]
  },
  "notification": {
    "message": "Hello!",
    "sound": "default.wav"
  },
  "schedule": "2018-06-20T13:00:00+09:00"
}

例¶

1人のユーザーにメッセージを配信する¶

{
  "audience": {
    "user_ids": [
      "user-1234"
    ]
  },
  "notification": {
    "message": "Hello!",
    "sound": "default.wav"
  }
}

複数のユーザーにメッセージを配信する¶

{
  "audience": {
    "user_ids": [
      "user-1234",
      "user-5678"
    ]
  },
  "notification": {
    "message": "Hello!",
    "sound": "default.wav"
  }
}

カスタムペイロードを使う¶

{
  "audience": {
    "user_ids": [
      "user-1234"
    ]
  },
  "notification": {
    "custom_payload": "{\"aps\":{\"alert\":{\"title\":\"hello\",\"body\":\"world\"},\"badge\":1}}"
  }
}
リッチ通知を送る¶

プッシュAPIを利用してリッチ通知を送る場合、カスタムペイロードにリッチ通知に必要な情報を以下のように記載してください。

iOS¶
{
  "audience": {
    "user_ids": [
      "user-1234"
    ]
  },
  "notification": {
    "custom_payload": "{\"aps\": {\"alert\": {\"title\": \"YOUR_NOTIFICATION_TITLE\",\"body\": \"YOUR_NOTIFICATION_BODY\"}},\"rpr_attachment\": {\"url\": \"IMAGE_URL\",\"type\": \"jpg\"}}"
}

注釈

リッチ通知を表示させるには、あらかじめ リッチ通知の受信準備の実装 がアプリ側で行われている必要があります。

cURLを使ってプッシュ通知を配信する¶

curl https://marketing.reproio.com/v1/push/xxxx/deliver \
--verbose \
--request POST \
--header "X-Repro-Token: MARKETING-TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data-binary '{"audience": { "user_ids": ["user-1234", "user-5678"]}}'

警告

エンドポイントのドメインが repro.io から reproio.com に変更されます。 旧ドメインも引き続きご利用頂けますが、なるべく新しいドメインをご利用ください。

管理画面から通知を配信する¶

プッシュAPIを管理画面から使うこともできます。これは、開発者の助けを借りずにマーケター自身でキャンペーンを打つための機能です。

Upload file

この機能には下記の制限があります。ご注意ください。

  • 配信されるメッセージは通知の作成画面で設定したものです。
  • 配信対象ユーザーは下記に示すフォーマットの、ユーザーIDのリストで指定する必要があります。
    • 文字コード: UTF8
    • 改行コード: LF または CRLF
    • ファイルサイズ: 3MBバイトまで
    • ファイルフォーマット:
user-1234
user-5678

プッシュAPIのリクエスト¶

リクエストヘッダー

リクエストのヘッダーには、以下の値を設定します。

ヘッダー 説明 必須
Content-Type application/jsonを指定します。 必須
X-Repro-Token API エンドポイントとRepro API トークンの取得 で取得したトークンを指定します。 必須

リクエストボディ

メッセージをJSONフォーマットで設定します。

プッシュAPIのレスポンス¶

レスポンスヘッダー

レスポンスのヘッダーには、以下の値が含まれます。

ステータス ヘッダー 説明
正常 X-RateLimit-Limit 単位時間あたりのアクセス上限
正常 X-RateLimit-Remaining アクセスできる残り回数
正常 X-RateLimit-Reset アクセス数がリセットされる時刻(unixtime)
リクエスト制限 Retry-After 再実行可能になるまでの秒数

レスポンスボディ

プッシュAPIをコールした際の、レスポンスに含まれるステータスコードとエラーメッセージの一覧は下記になります。

202 Accepted¶

リクエストが成功しました。

レスポンスボディ:

{
  "status": "accepted"
}

400 Bad Request¶

リクエストにエラーがあります。タイプミスなどがないかご確認ください。

レスポンスボディ:

{
  "error":"message"
}

401 Unauthorized¶

Repro API トークンが指定されていません。

レスポンスボディ:

{
  "status": "unauthorized",
  "error": {
    "messages": [
      "Please include your Repro API Token as \"X-Repro-Token\" HTTP header."
    ]
  }
}

403 Forbidden¶

指定した Repro API トークンが間違っています。

レスポンスボディ:

{
  "status": "forbidden",
  "error": {
    "messages": [
      "Please check your Repro API Token as \"X-Repro-Token\" HTTP header."
    ]
  }
}

404 Not Found¶

エンドポイントが存在しません。

レスポンスボディ:

{
  "status": "not_found",
  "error": {
    "messages": [
      "Not found."
    ]
  }
}

422 Unprocessable Entity¶

指定したパラメータが間違っています。

レスポンスボディ:

{
  "status": "unprocessable_entity",
  "error": {
    "messages": [
      "audience is missing",
      "audience[user_ids] is missing"
    ]
  }
}

413 Payload Too Large¶

リクエストの内容が大きすぎます。

レスポンスボディ:

{
  "status": "payload_too_large",
  "error": {
    "messages": [
      "client intended to send too large body"
    ]
  }
}

429 Too Many Requests¶

リクエスト数が多すぎます。 Retry-After ヘッダーに記載された秒数待った後、リクエストを再開してください。

レスポンスボディ:

{
  "status": "too_many_requests",
  "error": {
      "messages": [
          "Too many requests hit the API too quickly."
      ]
  }
}
  • « オーディエンスインポート(β)
  • ユーザープロフィールAPI »

About Us Careers Terms of Service Privacy Policy Cookie Policy

© 2020 Repro Inc.