開発者ドキュメント
Gateboxアプリ開発のためのSDK情報ならびに、開発関連技術情報を提供するページです。
はじめに
Gateboxに好きなキャラクターを呼び出したいと思っているそこのあなた。
おめでとうございます!Gatebox社はそんなあなたの願いをかなえるために "Gatebox Developer Program" を開始いたしました。
Gatebox社の提供するこのプログラムに参加することで、Gateboxで動くアプリケーションを開発することが可能になります。
参加資格は「Gatebox(GTBX-100)を持っていること」ただひとつです、個人でも法人でも、Gateboxを持っていればご参加いただけます。
このサイトでは、Gateboxアプリの開発に必要な情報と、Gateboxアプリ開発者同士をつなげるコミュニティを提供していきます。
Gateboxアプリとは?
Gateboxアプリとは、Gatebox上で動作するアプリケーションパッケージのことを言います。
GateboxアプリはUnityをはじめ、既に存在する多くの開発ツールで開発することができます。
Gateboxアプリで出来ること・作れるもの
例:逢妻ヒカリ
「癒しの花嫁」をコンセプトに、時間帯によって変化するキャラクター動作や、日本語対話エンジンと音声合成を組み合わせた多彩な会話、AIアシスタントClovaとの連携による生活サポート、そして離れていても会話ができるLINE連携と、多くの機能を持ったキャラクターアプリです。
ヒカリのサービスは、Gatebox本体だけでなく、クラウド側の多くの機能との連携によって実現されており、 LINE IDとGatebox ID認証の連携やAppData API, HomeAppliance API, Device APIなど、Developer Programで提供されるものも多く利用しています。
例:Gatebox Video
「Gatebox for Creator」をテーマに、Gateboxの表現力をもっと手軽に使えるよう、動画を配信して表示させることができるサービスです。
専用のWebサイトから、動画をアップし、Gatebox Videoにアプリ設定を切り替えれば動画を視聴することができます。
Gatebox Video専用Webサイトでは、Gatebox ID認証連携を利用しています。
例:Holomodels
Gugenka®が開発・運営しているARフィギュアアプリです。スマートフォン(iOS/Android)とVR向けに展開されていたサービスでしたが、Gatebox対応版もリリースされました。
スマートフォン版Holomodelsアプリで設定したGatebox対応ARフィギュアを、Gatebox上で表示させることができます。
例:ビジネスシーンでの利用
既にいくつかのプレスリリース発表がありましたが、Gateboxはその利用シーンをさらに広げようとしています。
商業施設や受付、展示会でのインスタレーションなどのシーンにおいても、Gateboxアプリが活用できます。
Gatebox App Marketで配信する
あなたが「作ったキャラクターアプリをもっと多くの人に使ってもらいたい!」「Gateboxで動く便利なサービスを作ったのでビジネスとして展開したい!」と考えるのは当然のことだと思います。
そのために "Gatebox App Market" を用意しています。
Gatebox App MarketにGateboxアプリを公開すれば、あなたが作ったGateboxアプリを他のGateboxユーザーが購読・利用することができるようになります。
Developer ConsoleとApp Marketを使うことで、アプリケーションのアップデートを自動配布したり、マネタイズの手段として定期課金と都度課金の仕組みを利用できます。
※App Market配信にあたり、別途Gatebox社とプラットフォーム利用契約を締結する必要がある場合があります。
配信までの流れ
開発したアプリをApp Marketで配信するまでのフローは以下の通りです。
始めましょう
まだお申込みでない方は "Gatebox Developer Program" 申し込みフォームから申請ください。
既に開発者アカウントをお持ちの方は、SDKを入手して開発を始めてみてください。
もし開発に困ったら、開発者同士で話ができるコミュニティで聞いてみましょう。
Gateboxコンテンツガイドライン
Gateboxは音声認識、画像認識等のテクノロジーを基盤にキャラクターを通じた新しいユーザー体験をもたらす一方、そのデバイスを通じたアプリの配信をする開発者にはプライバシーやコンテンツの権利に対する責任も発生します。
多様な体験をユーザーに届け続けるためにも、Gatebox開発者利用規約とあわせて、Gateboxコンテンツガイドラインを遵守してください。
Gatebox App Marketのレビューポリシー
Gatebox App Marketでアプリを配信し、ユーザーのGateboxで動作させる際には、当然ながらそのアプリに不適切なコンテンツが含まれていないことや、使用にあたり自身の権利や第三者の権利を侵害したり、危害が生じないことが前提となります。
また、アプリの動作がシステムに不具合をもたらさないことも重要な観点となります。
本ページでは、Gatebox App Marketで配信されるアプリに関してどのような観点でレビューが行われるのかを記載します。
本ポリシーは、アプリで表示されるコンテンツだけでなく、App Marketで掲載される内容にも適用されます。
システムにおける最低限の実装
- アプリの起動から切り替えによる終了処理が適切に実装されているか
- アプリの安定性。利用中に止まったり、復帰しなくなるようなことがないか
最低限の機能
- 音声認識・画像認識等を用いたインタラクションによる機能提供をしているか
- コンテンツのない画面や、外部Web・スマホアプリとの連携に未完成状態のものがないか
スパム行為
- ユーザーの代わりに何らかのメッセージを外部に送信するなどの機能において、ユーザーがその送信内容や送信先を確認・制御できるか
- アフィリエイトトラフィック誘導や、他者が権利を持つコンテンツ(アプリ・ウェブサイト)に関してその所有者や管理者に無断で表示していないか
- 他のアプリのコンテンツをコピーしていないか
- 広告表示を主目的としていないか
- Gateboxデバイス、その他のデバイスまたはサービス運営を妨げ、あるいは不正アクセスが行われないか
- システム及び他のアプリの動作に影響を与えることがないか
不適切なコンテンツ
- 人種、民族、宗教、障害、年齢、国籍、性的指向、などに関連する特性に基づいて個人もしくは団体に対する暴力ないし差別を扇動しないこと
- 過度な暴力表現や犯罪行為、禁止薬物の使用を助長、扇動しないこと。教育、科学または芸術を目的とする表現の場合、その目的を十分に理解できる情報が事前に提供されること
- 健康、医療、薬品等に関する情報を取り扱う場合、ユーザーに対してアプリのみでの判断だけでなく、医師の診断を必要とする旨を通知しているか
- 自然災害や紛争等の事象に対する妥当な配慮を行っているか
- 脅迫行為やいじめ、嫌がらせを助長、扇動しないこと。特定の個人もしくは団体を辱めることがないか
- アダルトコンテンツ、児童ポルノその他専ら性的好奇心をそそるために配信されるコンテンツでないこと(公共の場で妥当と判断されるものであるか)
- 金融商品や金融取引、資産管理のために配信されるものは、所定の法令が遵守されていることを確認できること
- 法令に基づき違法とされる賭博行為や賞金その他の報奨を伴うコンテンツでないこと
- ユーザーの不正行為を助長、扇動しないこと
- 審査に申告した情報に虚偽がないこと
ユーザー生成コンテンツ(UGC)
- 不適切な内容が投稿されないようにすること
- 不適切な内容を投稿するユーザーに対し制限を掛けることができること
- 不適切な内容をユーザーが開発者に報告し、その対応を行うことができること
- ライブストリーミング等を行う場合、問題のあるコンテンツは可能な限り即時に削除できること
- 不適切なUGCを投稿することを助長、扇動しないこと
知的財産権
- 他者の知的財産権(商標権、著作権、特許権、企業秘密、その他の専有的権利を含む)を侵害しないこと
- 知的財産権の侵害を助長、扇動しないこと
- 第三者の知的財産(ブランド名、ロゴ、画像など)を使用する許可を受けている場合はそれがわかる形で提示されること
- 偽造品、盗品の販売や宣伝を行わないこと
ユーザーデータの扱い
- Gateboxデバイス情報を始めとしたユーザーの情報及びユーザーから個別に収集する情報の取り扱い方法が開示されていること
- ユーザーデータの取り扱い方法について、開示された目的のみに使用されること
- 政府発行の個人認識番号やクレジットカード等に関する個人情報を取り扱う場合、それらの情報が公開されないこと
- ユーザーに何らかの同意を求める場合、標準で肯定とせず、明示的な同意を取得すること(例:Gateボタンをタップすることで同意)
- GateboxユーザーIDを、そのアプリが動作するために必要な範囲を超えて使用しないこと
システム及びサービス運営に対する侵害
- スパイウェア、ウィルス、トロイの木馬に類する悪意のあるソフトウェアでないか
- 上記の動作を行うプログラムが含まれていないか
- Gatebox App Market以外の提供元から実行コードをダウンロードするアプリでないか(UnityのAsset Bundle等アプリ動作に必要なものを除く)
- 追加で他のアプリをインストールしないこと
- 端末の利用状況を、明確な同意なく収集するような動作をしないこと
- システム機能を模倣ないし偽装し、ユーザーを欺く動作をしないこと
- 端末設定を不正に変更しないこと
- 端末の特権に不正に触れたり、不要な権限を取得しないこと
収益化手段
- Gatebox App Marketを通じて提供するアプリや追加コンテンツに課金する場合、Gatebox App Marketの決済システム使用すること(物理的なプロダクトへの支払いや、そのアプリ以外で消費できるデジタルコンテンツを除く)
- アプリ内で仮想通過を発行する場合は、そのアプリ内のみで使用できること
- 追加コンテンツの販売を通じて、コンテンツをランダムに受け取るメカニズム(いわゆる「ガチャ」「ルートボックス」)を提供する場合、アイテムの取得確率を購入前にユーザーに明示していること
- アプリのプラン購読を更新停止した場合、残存期間中はアプリの利用ができること
開発中のテスト
デモ、ベータ、トライアルのような段階のアプリをGatebox App Marketで公開することはできません。
代わりに、Developer Consoleで提供している「テスター機能」を利用してください。
「テスター機能」は、あくまでテストのための機能であり、何らかの対価と引き換えに限定的に配信するなど、サービスの一部としてユーザーに対して利用することはしてはなりません。
スペック
項目 | 説明 |
---|---|
チップセット | Qualcomm® Snapdragon™ 820 processor (APQ8096 SoC) |
CPU |
Qualcomm® Quad-core ARM®v8 64-bit CPUs organized as two dual clusters viz., Gold@2.2GHz and Silver@1.6GHz each1 |
GPU | Adreno™ 530 GPU with 64 bit addressing and support for OpenGL ES 3.1, OpenCL 2.0, |
DSP |
Hexagon™ 680 DSP with dual-Hexagon vector processor (HVX-512) 825MHz high-performance imaging and computer vision applications. |
Memory / Storage | LPDDR4 4G + eMMC / UFS 64GB |
OS | Android 8.1 |
※Bluetoothは準備中であり、現在利用できません。利用できるようになり次第、Developer Consoleで情報を掲載いたします。
Gateboxの画面投影の仕組み
Gateboxはリアプロジェクション方式を採用しています。本体後部上方にあるプロジェクタより、前方にむけて映像を投影します。
但し、プロジェクタから射出された映像には、スクリーンに当たる部分と当たらない部分があるため、プロジェクターから射出される映像のうち、スクリーンに当たる部分を理解して画面構成を作る必要があります。
投影範囲
出力解像度(px) | スクリーン投影範囲(px) |
---|---|
1280 x 720 | 562 x 686 |
水色枠がプロジェクタから投影される範囲、白枠が実際にスクリーンに表示される範囲です。
実際のアプリの画面は以下のような表示がなされています。
SDKの入手とAPIリファレンスの参照
Gatebox SDK を利用するには Gatebox Developer Program への登録が必要です
開発の始め方
Unityプロジェクト内に Gatebox SDK (Unity Package) を Import し、開発を始める手順を説明します。
Unityプロジェクトの作成
任意のディレクトリにUnityプロジェクトを作成します。
Gatebox SDK の Import
[アセット > パッケージをインポート > カスタムパッケージ...]を選択し、"GateboxSDK.unitypackage"をImportします。
GateboxSDKのunitypackageファイルを開く
GateboxSDKのScript(GateboxSDK.cs)と、aarファイル(gateboxsdk.aar)を選択("すべて"を押下)し、"インポート"を選択
※ "Samples"フォルダ以下は任意。
Gatebox SDK を Object に追加
Scene内にある任意のオブジェクトへ、"GateboxSDK"スクリプトを追加します。
GateboxSDKのスクリプトを追加
オリジナルのスクリプトからGateboxSDKのAPI呼び出し例
新規に作成するスクリプトをSceneへ追加した後、
using com.gateboxlab.gateboxsdk;
をヘッダ部分へ追加し、次にGatebox本体のStageLEDを操作する為のAPI、StageLED.SetColor(Color.red);
をStart関数に追加します。
任意のScriptをSceneへ追加
GateboxSDKのusingと、StageLEDの色を変化させるAPIを追加
ビルドのための Package Name 設定
[編集 > Project Settings...]を選択し、[Player]項目の[パッケージ名]を任意に指定、[最低 API レベル]を"Android 8.0 'Oreo' (API level 26)"に設定して下さい。
"Project Settings..."を選択
"パッケージ名"と"最低 API レベル"を編集
ビルドの設定
[ファイル > ビルド設定...]を選択し、"プラットフォーム"を「Android」に切替後、[ビルド]を選択します。
"ビルド設定..."を選択
"プラットフォーム"の切替と、"ビルドして実行"を選択
ビルドされたパッケージを、Developer Consoleの「パッケージ」からアップロードすることで、テスターへの配布が可能になります。
詳しくはDeveloper Consoleの使い方ドキュメントを参照してください。
重要:各APIの「アクセストークン」の環境別の取り扱い
Gatebox SDKのAPIの一部には「アクセストークン」を引数に取るものがあり、これはOAuth2を通じて取得するエンドユーザーのアクセストークン(JSON Web Token)のことを指します。
例えば "GetAppData()" のAPIは以下のようになっています。
static Result com.gateboxlab.gateboxsdk.AppData.GetAppData (
string applicationID,
string fields,
string subscriptionKey,
string applicationSecret,
int timeoutSeconds = -1,
string accessToken = null
)
その他の accessToken も同様です、詳細はAPIリファレンスを参照してください。
Tips:Gatebox SDK Sample Scene について
Gatebox SDK Unity Package には、GateboxSDK の Sample Scene が含まれています。
これらのサンプルは、SDKの利用例として作成されたものですので、必要に応じて参照してください。
サンプル内のコードに関するリファレンスはこちらです。
Tips:Unity EditorとGatebox本体におけるコード制御の分岐
開発中はUnity Editorで作ったものをDeveloper Console経由でテスターの端末に送り込む形になりますが、PCにはGateボタンやLED、温湿度センサーがありません。
そんな時は、Platform dependent complitationを使って出しわけることができます。
using UnityEngine;
using System.Collections;
public class PlatformDefines : MonoBehaviour {
void Start () {
#if UNITY_EDITOR
Debug.Log("Unity Editor");
#elif UNITY_ANDROID
Debug.Log("Gatebox");
#endif
}
}
Tips:Unity Editorでアクセストークンを使う
開発中はUnity Editorでアプリを動かすことになるわけですが、SDKを利用する際にはアクセストークンを要求するものがあるため、別途指定する必要があります。
簡単な手法として、画面にInputFieldを作り、
アクセストークンを取得するツール
で取得し入力したものを利用するとよいでしょう。
public class Debug : MonoBehaviour
{
[SerializeField]
private InputField accessToken = null;
private void Start()
{
#if UNITY_EDITOR
if (!string.IsNullOrEmpty(accessToken.text))
{
// accessTokken.text を Debug で使うための処理
}
#endif
}
}
Tips:Unity2019以降を使用すると音声にノイズが乗る問題の対応
Unity2019以降を使用して作成したアプリでは音声にノイズが乗ることが確認されています。
対応方法としてUnityフォーラムのスレッドを参考に、アプリ起動処理で以下のようにオーディオのバッファ値を設定することで解消します。
void Start()
{
AudioConfiguration config = AudioSettings.GetConfiguration();
config.dspBufferSize = 64;
AudioSettings.Reset(config);
}
Gatebox ID認証
Gateboxユーザーアカウントの認証に関する情報です。
Gatebox IDとは?
Gatebox(GTBX-100)に関連するサービスを利用するには、Gatebox IDを取得する必要があります。Gatebox IDはGatebox社(又は許諾されたサードパーティサービス)が提供するWebアプリ、スマートフォンアプリでの認証に対応しています。
Gatebox ID認証をWebアプリやスマートフォンアプリに組み込むことで、サードパーティサービスへのサインインをGateboxアカウントで行うことができるようになります。
そのほか、デベロッパーはGatebox ID認証を通じて、エンドユーザーを認証する以外に、後述のWeb APIをコールするためのアクセストークンを取得することができます。
※Gatebox ID認証はAzure AD B2Cをその基盤として採用しており、特別に記載のない仕様に関してはそちらに準拠します。
Gatebox ID認証を利用するには
Gatebox ID認証は、Gatebox社が認定し登録したWebアプリやスマートフォンアプリに対して認証サービスを提供します。それらを登録したい場合は こちら へ利用目的を添えてお問い合わせください。
Gatebox本体で動くアプリを開発する場合は、Gatebox社の提供するUnity SDKを用いることでエンドユーザーの認証を意識することなくAPIアクセスが可能です。詳しくはSDKのドキュメントを参照してください。
アプリにGatebox ID認証を組み込む
Webアプリ向けのGatebox ID認証の処理は、OAuth2のAuthorization Code FlowとOpenID Connectプロトコルを利用しています。
認証に関するエンドポイントやクレーム情報は、Gatebox社の公開する OpenID Configurationエンドポイント を参照することで確認できます。
※Gatebox社は必要に応じて開発者・アプリごとに異なるポリシーのOpenID Configurationエンドポイントを設定し、提供することがあります。
前述のとおり、Gatebox ID認証フローはOAuth 2仕様のセクション4.1で規程されています。
OAuth2のAuthorization Code Flowを用いることで、後述のCharacter Application APIにアクセスするためのアクセストークンと更新トークンを取得できます。
本ドキュメントはOAuth2仕様を一読していることを前提に記述されており、また本ドキュメントに例示されているHTTPリクエストを試すには、Gatebox社がアプリ登録時に発行する client_id 及び client_secret が必要です。
1. Authorization Codeを取得する
アプリがアクセストークンを取得するには、まずユーザーを /authorize エンドポイントにリダイレクトさせます。
この手順によって、ユーザーにGatebox ID認証を行ってもらうことで、正当なユーザーであるかどうかを確認します。
以下にリクエストを例示します(可読性を上げるために改行してあります)
GET https://gateboxcustomers.b2clogin.com/gateboxcustomers.onmicrosoft.com/b2c_susi_1/oauth2/v2.0/authorize
?response_type=code
&redirect_uri={redirect_url}
&client_id={client_id}
&response_mode=query
&scope={client_id}+openid
&state=arbitrary_data_you_can_receive_in_the_response
ここでは主要なパラメタを解説します。
パラメタ | 説明 |
---|---|
redirect_uri | ユーザーが認証を終えた後にリダイレクトされるURLです。 このURLはアプリ登録時に指定されたもののみが利用できます。 |
client_id | アプリに割り当てられたアプリケーションID |
scope | Gatebox IDが対応しているScopeは openid と offline_access のみ。 一般的なScope指定と異なり、client_idを先頭につける必要があります。 |
response_mode | 取得したAuthorization Codeをアプリに返すときに使用するメソッド。 query、form_post、または fragment を指定できます。 |
state | 必須ではありませんが、CSRF攻撃対策として利用することを推奨します。 または、認証要求前の状態に関する情報をエンコードして認証後の処理に引き渡す目的でも利用することができます。 |
ユーザーが認証処理を完了すると、redirect_uri に対してリダイレクトがかかります。
この際 response_mode で指定した手段でAuthorization Codeを得ることができます、例えば response_mode=query を利用した場合は、以下のような応答を得られます。
GET {redirect_uri}?
code=AwABAAAAvPM1KaPlrEqdFSBz... // Authorization Code
&state=arbitrary_data_you_can_receive_in_the_response // state param
&state=arbitrary_data_you_can_receive_in_the_response // state param
パラメタ | 説明 |
---|---|
code | アプリが要求したAuthorization Code。このコードを用いて、アプリはトークンを取得できます。 Authorization Codeの有効期間は非常に短く、再利用もできません。 |
state | Authorization Codeリクエスト時に含めた値が戻ってきます。アプリは送信したstate値と戻ってきたstate値が同一であることを検証する必要があります。 |
ユーザーが認証に失敗するなど、何らかのエラーが発生した場合には redirect_uri に対してエラー応答を送信します。
GET {redirect_uri}?
error=access_denied
&error_description=The+user+has+cancelled+entering+self-asserted+information
&state=arbitrary_data_you_can_receive_in_the_response
パラメタ | 説明 |
---|---|
error | 発生したエラーをあらわす文字列。この文字列を使用してエラー処理を決定することができます。 |
error_description | 認証エラーの具体的内容。 |
state | Authorization Codeリクエスト時に含めた値が戻ってきます。アプリは送信したstate値と戻ってきたstate値が同一であることを検証する必要があります。 |
2. Tokenを取得する
Authorization Codeを取得したら /token エンドポイントにPOSTリクエストを送ることで、Tokenを取得できます。
リクエストは可読性を上げるために改行しています。
POST https://gateboxcustomers.b2clogin.com/gateboxcustomers.onmicrosoft.com/b2c_susi_1/oauth2/v2.0/token
Host: gateboxcustomers.b2clogin.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id={client_id}
&scope={client_id}+openid
&code={authorization_code}
&redirect_uri={reirect_url}
パラメタ | 説明 |
---|---|
client_id | アプリに割り当てられたアプリケーションID |
scope | Gatebox IDが対応しているScopeは openid と offline_access のみ。 一般的なScope指定と異なり、client_idを先頭につける必要があります。 |
code | 取得したAuthorization Codeを指定。 |
redirect_uri | ユーザーが認証を終えた後にリダイレクトされるURLです。 このURLはアプリ登録時に指定されたもののみが利用できます。 |
正常なレスポンスは以下のようになります
{
"not_before": "1442340812",
"token_type": "Bearer",
"access_token": "eyJ..",
"scope": "{client_id}+openid",
"expires_in": "3600",
"refresh_token": "AAQ...",
}
パラメタ | 説明 |
---|---|
not_before | アクセストークンが有効とみなされるエポック時間 |
token_type | Gatebox IDが対応しているToken Typeは Bearer タイプのみです。 |
access_token | 署名付きの JSON Web Token トークン検証のための公開鍵はOpenID Configurationエンドポイント の jwks_url から取得できます。 取得したアクセストークンを Character Application API リクエストで使用します。 |
expires_in | トークンの有効期限(秒)で、 not_before から expires_in 秒経過するまでが有効範囲となります。 |
refresh_token | 取得したアクセストークンの有効期限が切れた後、このリフレッシュトークンを利用して新たなトークンを取得することができます。 offline_access スコープでトークンを取得することで得られます。 |
何らかのエラーが発生した場合のエラー応答は以下の通りです
{
"error": "access_denied",
"error_description": "The user revoked access to the app.",
}
パラメタ | 説明 |
---|---|
error | 発生したエラーをあらわす文字列。この文字列を使用してエラー処理を決定することができます。 |
error_description | 認証エラーの具体的内容。 |
3. Tokenを更新する
アクセストークンの有効期限は基本的に短く設定されています。有効期限が切れた後にもAPIアクセスが必要な場合には、トークンを更新してください。
/token エンドポイントにリクエストを送信することで、トークンを更新できます。
トークン取得の時とは異なり、 code の代わりに refresh_token を指定します。
リクエストは可読性を上げるために改行しています。
POST https://gateboxcustomers.b2clogin.com/gateboxcustomers.onmicrosoft.com/b2c_susi_1/oauth2/v2.0/token
Host: gateboxcustomers.b2clogin.com
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token
&client_id={client_id}
&client_secret={client_secret}
&scope={client_id}+openid
&refresh_token={refresh_token}
&redirect_uri={reirect_url}
パラメタ | 説明 |
---|---|
client_id | アプリに割り当てられたアプリケーションID |
client_secret | アプリに割り当てられたアプリケーションIDに関連付けられているsecret key |
scope | Gatebox IDが対応しているScopeは openid と offline_access のみ。 一般的なScope指定と異なり、client_idを先頭につける必要があります。 |
code | 取得したAuthorization Codeを指定。 |
redirect_uri | ユーザーが認証を終えた後にリダイレクトされるURLです。 このURLはアプリ登録時に指定されたもののみが利用できます。 |
refresh_token | Token取得時に取得したRefresh Tokenを指定します。 |
正常なレスポンスは以下のようになります
{
"not_before": "1442340812",
"token_type": "Bearer",
"access_token": "eyJ..",
"scope": "{client_id}+openid",
"expires_in": "3600",
"refresh_token": "AAQ...",
}
パラメタ | 説明 |
---|---|
not_before | アクセストークンが有効とみなされるエポック時間 |
token_type | Gatebox IDが対応しているToken Typeは Bearer タイプのみです。 |
access_token | 署名付きの JSON Web Token トークン検証のための公開鍵はOpenID Configurationエンドポイント の jwks_url から取得できます。 取得したアクセストークンを Character Application API リクエストで使用します。 |
expires_in | トークンの有効期限(秒)で、 not_before から expires_in 秒経過するまでが有効範囲となります。 |
refresh_token | 取得したアクセストークンの有効期限が切れた後、このリフレッシュトークンを利用して新たなトークンを取得することができます。 offline_access スコープでトークンを取得することで得られます。 |
何らかのエラーが発生した場合のエラー応答は以下の通りです
{
"error": "access_denied",
"error_description": "The user revoked access to the app.",
}
パラメタ | 説明 |
---|---|
error | 発生したエラーをあらわす文字列。この文字列を使用してエラー処理を決定することができます。 |
error_description | 認証エラーの具体的内容。 |
Character Application API
Unity SDK以外の、スマートフォンアプリやWebアプリからAPI連携したいときに利用するWeb APIの情報です。
Gatebox ID認証を経て取得したアクセストークンを用いることで、これらのAPIを本体アプリ以外からもコールすることができます。
AppData API
本体のアプリケーション領域(ローカルストレージ)にデータを保存する場合、ユーザー操作による本体をリセットや、アプリのアンインストールを考慮する必要があります。
また、GateboxアプリとWebアプリやスマートフォンアプリを連携させたい場合、データを連携するサーバの用意が必要になることがあります。
そういった実装を行う場合、開発者は本APIを利用することで、サーバを用意することなくデータ連携を実装することが可能になります。
※開発者自身が、自身の責任において同様のデータ連携サーバを用意することに制限は(2019/11現在)ありませんので、すでに存在するサーバとのデータ連携のための通信は独自に実装できます。
リクエスト例を以下に示します。
GET
curl -v -X GET "https://gatebox.azure-api.net/character-application/v2/AppData/{app_id}?fields={string}"
-H "Authorization: Bearer {access_token}"
-H "x-gatebox-application-secret: {application_secret}"
-H "Ocp-Apim-Subscription-Key: {subscription_key}"
PUT/POST
curl -v -X POST "https://gatebox.azure-api.net/character-application/v2/AppData/{app_id}"
-H "Authorization: Bearer {access_token}"
-H "x-gatebox-application-secret: {application_secret}"
-H "Ocp-Apim-Subscription-Key: {subscription_key}"
--data-ascii "{ "name": "Hikari" }"
DELETE
curl -v -X DELETE "https://gatebox.azure-api.net/character-application/v2/AppData/{app_id}?fields={string}"
-H "Authorization: Bearer {access_token}"
-H "x-gatebox-application-secret: {application_secret}"
-H "Ocp-Apim-Subscription-Key: {subscription_key}"
それぞれのPath指定内容やパラメタは以下の通りです。
パラメタ | 説明 |
---|---|
app_id | Developer Consoleのアプリ情報欄にある「アプリケーションID」文字列 |
fields | AppDataからデータを部分的に取得したり、部分的に更新したいときに指定します。 "," カンマで区切って複数指定することが可能です。 指定がない場合は全パラメタが操作対象になります。 |
access_token | /token エンドポイントから取得したアクセストークン(JSON Web Token) |
application_secret | Developer Consoleのアプリ情報欄にある「アプリケーションシークレット」文字列 |
subscription_key | Developer Consoleのアプリ情報欄にある「開発者APIキー」文字列 |
GateboxDevices API
Gateboxアプリが動く本体の設定を取得するAPIです。
リクエスト例を以下に示します。
GET
curl -v -X GET "https://gatebox.azure-api.net/character-application/v2/GateboxDevices/{device_id}"
-H "Authorization: Bearer {access_token}"
-H "x-gatebox-application-secret: {application_secret}"
-H "Ocp-Apim-Subscription-Key: {subscription_key}"
それぞれのPath指定内容やパラメタは以下の通りです。
パラメタ | 説明 |
---|---|
device_id | Unity SDKで提供されるGateboxDevices.GetDeviceId()で取得できるデバイスID。 そのユーザーのすべてのデバイスを取得する場合は "all" を指定します。 |
access_token | /token エンドポイントから取得したアクセストークン(JSON Web Token) |
application_secret | Developer Consoleのアプリ情報欄にある「アプリケーションシークレット」文字列 |
subscription_key | Developer Consoleのアプリ情報欄にある「開発者APIキー」文字列 |
レスポンスで以下のようなJSONが得られます。
{
"device_name": "リビングのGb",
"owner_id": "247a1af9-5ba2-4801-bce5-aab9eb08e732",
"set_application_id": "YCzzKKWB0UtsTQ",
"set_tv_id": "PAN_TV_N2QAYB001016", // テレビのリモコンID
"set_light_id": "PAN_LT_HK9496MM", // ライトのリモコンID
"set_aircon_id": "MIT_AC_WG161", // エアコンのリモコンID
"id": "5f7a4a9",
"created_on": "2018-08-27T09:52:55.2937532Z",
"updated_on": "2018-10-18T01:14:28.1966083Z",
"_etag": "\"0000d5fb-0000-0000-0000-5bc7de740000\""
}
Receipt API
Gatebox App Marketで「アプリのプランを購読」したり「追加コンテンツを購入」した際に記録される購買情報を取得するAPIです。
このAPIを用いることで、Gateboxアプリユーザーの購買状況に応じたコンテンツの出し分け等が可能になります。
リクエスト例を以下に示します。
GET
curl -v -X GET "https://gatebox.azure-api.net/character-application/v2/Receipt/{app_id}"
-H "Authorization: Bearer {access_token}"
-H "x-gatebox-application-secret: {application_secret}"
-H "Ocp-Apim-Subscription-Key: {subscription_key}"
それぞれのPath指定内容やパラメタは以下の通りです。
パラメタ | 説明 |
---|---|
app_id | Developer Consoleのアプリ情報欄にある「アプリケーションID」文字列 |
access_token | /token エンドポイントから取得したアクセストークン(JSON Web Token) |
application_secret | Developer Consoleのアプリ情報欄にある「アプリケーションシークレット」文字列 |
subscription_key | Developer Consoleのアプリ情報欄にある「開発者APIキー」文字列 |
レスポンスで以下のようなJSONが得られます。
{
"id": "{app_id}",
"customer_id": "{customer_id}",
"plan_id": "{plan_id}",
"additional_contents": [
{
"id": "{additional_contents_id}",
"count": {count}
}
]
}
レスポンス内容のパラメタは以下の通りです。
パラメタ | 説明 |
---|---|
app_id | Developer Consoleのアプリ情報欄にある「アプリケーションID」文字列 |
access_token | /token エンドポイントから取得したアクセストークン(JSON Web Token) |
application_secret | Developer Consoleのアプリ情報欄にある「アプリケーションシークレット」文字列 |
subscription_key | Developer Consoleのアプリ情報欄にある「開発者APIキー」文字列 |
何らかのエラーが発生した場合は以下のようなレスポンスになります。
{
"type": 3,
"title": "Request item not found",
"detail": null,
"status": 404,
"parameters": {}
}
レスポンス内容のパラメタは以下の通りです。
パラメタ | 説明 |
---|---|
type | APIエラーのタイプ 0:認証エラー 1:サーバ側例外 2:間違った利用方法 3:レコードが見つからない |
title | エラー文言 |
detail | エラー詳細 |
status | HTTPステータスコード |
parameters | 付加的情報を示すパラメタ |
アプリを作成する
Gateboxでアプリを開発する第一歩は、アプリをDeveloper Consoleで作成することです。
アプリを作成することで、SDKの利用に必要なAPIキーやテスターの登録など、開発に必須となる設定ができるようになります。
作成は「新規作成」リンクから行います。
アプリを作成すると、Developer Console上に先ほど作成したアプリがリストされます。
リストされたアプリの「編集」リンクから、アプリの設定を行う画面に遷移します。
この「編集」画面で、アプリの設定を行っていきます。
「アプリ情報」タブに記載されている情報が、APIコールに必要となるキーです。必要に応じて利用してください。
プランの設定
GateboxアプリをGateboxで動かすためには、プランを購読することが必要です。
ユーザーは、アプリのプランを購読することで、デバイス管理システム経由でアプリを呼び出すことができるようになります。
本項では、アプリ配布の基本となるプラン設定について説明します。
プランを作成する
Gatebox App Marketで配布されるアプリの契約期間は30日ごとの請求単位で設定します。
アプリ一覧画面から、アプリのサムネイル下部の「編集」ボタンから、アプリページに移動できます。
アプリのページが表示されますので、「プラン」タブ→「新規作成」をクリックしてください。
「プラン-新規作成」画面が表示されます
プランの名称、30日ごとの利用料金、必要ならばプランの説明を入力します。
プランは0円でも作成することができます。
同意するのチェックボックスにチェックを付け、「作成」ボタンをクリックすると「プラン」タブに作成したプランが表示されます。
1つのアプリに対して複数のプランを作成することができます。必要に応じて、再度上記手順を行ってください。
※プランもアプリ同様に削除ができません。また、利用料金の変更もできません。公開しなければユーザーには見えませんので、間違えて作成した場合は新たに作成してください。
※プランは後述のサンドボックス環境を利用できるテスターの場合課金処理が実行されません。
作成したプランの内容を編集する
名称、説明を編集することができます。
「プラン」タブの作成したプラン→「編集」をクリックしてください。
編集したい欄に入力し、「設定を反映」または「サンドボックス環境に反映」をクリックします。
プランの詳細画面が表示され、編集が反映されています。
※利用料金の編集はできません。
設定をプロダクト環境に反映する
作成したプランに問題ないことが確認出来たらプロダクト環境に反映します。
反映することで一般ユーザーがサンドボックスユーザーと同じ状態のプランを閲覧できるようになります。
※プランの場合、プランの新規作成後はプロダクト環境にも反映されていますのでこの手順は不要です。
プランの編集をした場合、説明のみプロダクト環境に反映が必要です。他の項目はサンドボックスとプロダクトで共通となります。
編集が済んだ「プラン」タブの作成したプランをクリックすると、「プロダクト環境に反映」ボタンが表示されているのでクリックします。
「プラン-コンテンツ反映」画面が表示されます
問題ないことが確認出来たら、同意するにチェックを入れ、「プロダクト環境に反映する」をクリックすろと、サンドボックス側には「プロダクト環境に反映済みです」と表示され、プロダクト環境側に編集した内容が表示されます。
プランをApp Marketに公開する
プランをApp Marketに公開することでプランを閲覧できるようになります。
まず「プラン」タブの作成したプランをクリック、プランの詳細画面で「編集」ボタンをクリックします。
プランの編集画面が表示されたら公開設定の「公開済み」のスイッチをクリックすると設定の変更ができます。スイッチが左の場合は非公開、右の場合は公開の状態です。
スイッチを右の状態にして「設定を反映」をクリックするとApp Marketにプランが表示されるようになり、プランの一覧画面や詳細画面でも設定が確認できます。
※原則として一度プロダクト環境に公開したプランは非公開とせずに、次で説明する「新規購読」をオフとする対応をしてください。
プランを購読できるようにする
プランをApp Marketに公開する手順と同様に、プランの編集画面を表示させます。
プラン設定の「新規購読」のスイッチをクリックすると設定の変更ができ、スイッチが左の場合は新規購読不可能、右の場合は新規購読可能の状態です。
スイッチを右の状態にして「設定を反映」をクリックするとApp Marketのプランが新規購読できる状態になり、プランの一覧画面や詳細画面でも設定が確認できます。
※新規購読をオフにしてもApp Marketのプランは表示され、購読するためのボタンが非活性となります。
プランをユーザーが購読を自動更新できるようにする
本設定を行うことで30日ごとの購読が自動で継続されるようになります
プランをApp Marketに公開する手順と同様に、プランの編集画面を表示させ、プラン設定の「次回更新」のスイッチをクリックすると設定の変更ができます。
スイッチが左の場合は自動更新されず、右の場合は自動更新されません。
スイッチを右の状態にして「設定を反映」をクリックするとプランの購読が自動更新される状態になり、プランの一覧画面や詳細画面でも設定が確認できます。
追加コンテンツ
追加コンテンツを作成する
アプリは定期購読を必要とする設定であることは前節までで解説しましたが、"1回だけ" 販売したいものや "1つあたりの価格は決めるが販売数は制限しない" といった販売をした場合は、追加コンテンツ機能を利用することで、そういった要望を実現できます。
アプリのページから「追加コンテンツ」タブ→「新規作成」をクリックしてください。
「追加コンテンツ-新規作成」画面が表示されます。
追加コンテンツの名称、料金、購入可能数、必要ならば追加コンテンツの説明を入力し、同意するのチェックボックスにチェックを付け、「作成」ボタンをクリックしてください。
「追加コンテンツ」タブに作成した追加コンテンツが表示されます。
1つのアプリに対して複数の追加コンテンツを作成することができます。必要に応じて、再度上記手順を行ってください。
※購入可能数は何も入力しない場合は無制限に購入できる状態になります。
※追加コンテンツもアプリ同様に削除ができません、公開せずに追加コンテンツを作成しなおしてください。
※追加コンテンツも後述のサンドボックス環境を利用できるテスターの場合課金処理が実行されません。
追加コンテンツの画像を設定する
App Marketに表示される追加コンテンツのサムネイルなどの画像の編集をします
「追加コンテンツ」タブの作成した追加コンテンツ→「画像編集」をクリックすると「追加コンテンツ-画像編集」画面が表示されます
サムネイル画像(大)、サムネイル画像(小)、詳細画像それぞれ既定のサイズでアップロードをしてください。必要に応じて代替文字列を入力してください。
既定のサイズおよびApp Market内での表示場所は以下の通りです
サムネイル画像(大):162px x 162px 追加コンテンツの一覧画面
サムネイル画像(小):88px x 88px マイページの購入履歴画面など
詳細画像:750px x 750px 追加コンテンツの詳細画面
※画像を変更したい場合はアップロードしなおしてください
※詳細画像のみ最大5個までアップロードできます
※詳細画像のみ削除することができます
※既定のサイズ以外の画像はアップロードできません
※画像の対応形式はpngおよびjpgのみです
作成した追加コンテンツの内容を編集する
画像以外を編集したい場合は「追加コンテンツ」タブの作成した追加コンテンツ→「編集」をクリックしてください。
編集したい欄に入力し、「設定を反映」または「サンドボックス環境に反映」をクリックします。
追加コンテンツの詳細画面が表示され、編集が反映されています。
画像を編集したい場合は「追加コンテンツ」タブの作成した追加コンテンツ→「画像編集」をクリックし、画像の初回設定時と同様に操作を行ってください。
設定をプロダクト環境に反映する
作成した追加コンテンツに問題ないことが確認出来たらプロダクト環境に反映しましょう。
反映することで一般ユーザーがサンドボックスユーザーと同じ状態の追加コンテンツを閲覧できるようになります。
※追加コンテンツの場合、追加コンテンツの新規作成後は「説明」のみプロダクト環境に反映されています。
※追加コンテンツの画像を設定/編集した場合や「説明」を編集をした場合に実施してください。
※画像と「説明」のみプロダクト環境に反映が必要です。他の項目はサンドボックスとプロダクトで共通です。
画像の設定/編集または「説明」の編集が済んだ「追加コンテンツ」タブの作成した追加コンテンツをクリックし、「プロダクト環境に反映」ボタンが表示されているのでクリックします。
すると「追加コンテンツ-コンテンツ反映」画面が表示されます。
問題ないことが確認出来たら、同意するにチェックを入れ、「プロダクト環境に反映する」をクリックします。
サンドボックス側には「プロダクト環境に反映済みです」と表示されます。
プロダクト側には編集した内容が表示されます。
追加コンテンツをApp Marketに公開する
追加コンテンツをApp Marketに公開することで、ユーザーはアプリの追加コンテンツを閲覧できるようになります。
「追加コンテンツ」タブの作成した追加コンテンツをクリック、追加コンテンツの詳細画面で「編集」ボタンをクリックし、追加コンテンツの編集画面が表示されたら公開設定の「公開済み」のスイッチをクリックすると設定の変更ができます。
スイッチが左の場合は非公開、右の場合は公開の状態です。
スイッチを右の状態にして「設定を反映」をクリックするとApp Marketに追加コンテンツが表示されるようになり、追加コンテンツの一覧画面や詳細画面でも設定が確認できます。
※原則として一度プロダクト環境に公開した追加コンテンツは非公開とせずに、次で説明する「販売中」をオフとする対応をしてください
追加コンテンツを購入できるようにする
追加コンテンツの「販売中」のスイッチをクリックすると設定の変更ができます。
スイッチが左の場合は購入不可能、右の場合は購入可能の状態です。
スイッチを右の状態にして「設定を反映」をクリックするとApp Marketの追加コンテンツが購入できる状態になります。
追加コンテンツの一覧画面や詳細画面でも設定が確認できます。
※販売中をオフにしてもApp Marketの追加コンテンツは表示されており、購読するためのボタンが非活性となります。
App Market掲載情報
App Market掲載情報を設定する
App Marketに掲載する情報は、ユーザーにとってそのアプリを購読するにあたっての判断となる情報を与える重要なものになります。
本項では、その設定を解説します。
アプリのページから「App Market掲載」タブ→「編集」をクリックしてください
「概要」及び「法的情報」内の項目は入力必須項目です。
「問い合わせ」、「プロモーション」、「法的情報」内の項目は画面内の入力例の通り、既定のフォーマットで入力してください
入力が完了したら「サンドボックス環境に保存」をクリックすると、App Market掲載画面が表示され、設定が反映されています
App Market掲載情報の画像を設定する
App Marketに表示されるアプリのサムネイルなどの画像の編集をします
App Market掲載情報の設定が完了したら、「App Market掲載」タブに「画像編集」ボタンが表示されますのでクリックしてください
「App Market掲載画像-編集」画面が表示されます
バナー画像、アイコン画像、アピール画像それぞれ既定のサイズでアップロードをしてください。必要に応じて代替文字列を入力してください。
既定のサイズおよびApp Market内での表示場所は以下の通りです。
バナー画像:750px x 312px App Marketのトップやアプリの画面
アイコン画像:36px x 36px マイページの購入履歴画面など
アピール画像:200px x 355px アプリの画面
※画像を変更したい場合はアップロードしなおしてください
※アピール画像のみ最大5個までアップロードできます
※アピール画像のみ削除することができます
※既定のサイズ以外の画像はアップロードできません
※画像の対応形式はpngおよびjpgのみです
App Market掲載情報の内容を編集する
画像以外を編集したい場合は「App Market掲載」タブ→「編集」をクリックしてください。
編集したい欄に入力し、「設定を反映」または「サンドボックス環境に保存」をクリックすると、App Market掲載画面が表示され、編集が反映されます。
画像を編集したい場合は「App Market掲載」タブ→「画像編集」をクリックし、画像の初回設定時と同様に操作を行ってください
App Market掲載情報の設定をプロダクト環境に反映する
作成したApp Market掲載情報に問題ないことが確認出来たらプロダクト環境に反映しましょう。
反映することで一般ユーザーがサンドボックスユーザーと同じ状態のアプリの情報を閲覧できるようになります。
※App Market掲載情報の場合、プランや追加コンテンツと異なり、初回設定後にプロダクト環境に反映されているものはなく、サンドボックスとプロダクトで共通の設定項目もありません
App Market掲載情報の設定/編集が完了したら「App Market掲載」タブの「プロダクト環境に反映」ボタンをクリックします。
「App Market掲載情報-プロダクト環境に反映」画面が表示されます
問題ないことが確認出来たら、同意するにチェックを入れ、「プロダクト環境に反映する」をクリックすると、サンドボックス側には「プロダクト環境に反映済みです」と表示されます。
プロダクト側には編集した内容が表示されます。
アプリバナー
アプリバナーの画像を設定する
ユーザーがアプリを購読した後、デバイス管理システム上でアプリを切り替える際に選択するバナーを設定します。
※サンドボックス環境を参照するテスターもGateboxアプリを起動する際に同様の操作を行いますので必ず設定してください。
「アプリバナー」タブ→「画像編集」をクリックしてください。
「デバイス管理掲載画像-編集」画面が表示されます。
※650px x 200pxでアップロードをしてください。必要に応じて代替文字列を入力してください。
※画像を変更したい場合はアップロードしなおしてください
※既定のサイズ以外の画像はアップロードできません
※画像の対応形式はpngおよびjpgのみです
アプリバナーの画像を編集する
設定時と同様の操作を行うことで、アプリバナーを更新できます。
アプリバナーをプロダクト環境に反映する
作成したアプリバナーに問題ないことが確認出来たらプロダクト環境に反映しましょう。
反映することで一般ユーザーがサンドボックスユーザーと同じ状態のアプリバナーを閲覧できるようになります。
「アプリバナー」タブ→「プロダクト環境に反映」をクリックします
「デバイス管理掲載情報-反映」画面が表示されます
同意するにチェックを入れ、「プロダクト環境に反映」をクリックします。
サンドボックス側には「プロダクト環境に反映済みです」と表示されます
プロダクト側に反映されます
テスター登録
テスタ―登録をする
開発中のアプリをGatebox実機で確認したり、あるいは別のハードウェアで正しく動作するかをチェックするには、サンドボックス環境にテスターを登録しましょう。
「テスター」タブ→登録をクリックしてください。
「テスター招待」画面が表示されます
メールアドレスを指定して招待する場合は「メールアドレスを指定して招待」タブをクリックします。
サンドボックスユーザーとして登録したい方のメールアドレスと備考を入力し、「送信」をクリックすると、サンドボックスユーザーへの招待メールが送信されます。
アプリケーションのサムネイルが表示されているjoin画面が表示されますので「join」をクリックします
以下2点が確認できれば登録が完了です
・App Marketの画面にアプリケーションのサムネイルが表示されている
・Developer Consoleの「テスター」タブに登録されたユーザーのIDと招待時に入力していた備考が表示されている
ユーザーIDを指定して登録する場合は「ユーザー ID を指定して登録」タブをクリックします
サンドボックスユーザーとして招待したい方のユーザーIDと備考を入力し、「保存」をクリックします。
メールアドレスを指定して招待した時と同様に、以下2点が確認できれば登録が完了です
・App Marketの画面にアプリケーションのサムネイルが表示されている
・また、Developer Consoleの「テスター」タブに登録されたユーザーのIDと招待時に入力していた備考が表示されている
テスターを削除する
サンドボックスユーザーを削除する場合は、「テスター」タブ→「削除」をクリックすると「テスター削除」が表示されますので、削除したいサンドボックスユーザーにチェックを入れ「削除」をクリックします。
※一度削除したユーザーを招待メールから招待する場合は、招待メールを送りなおしてください。同じメールに記載されたURLから登録することはできません。
パッケージ
パッケージをアップロードする
Gatebox上でアプリを実行するために、アプリケーションのパッケージファイルをアップロードしましょう。
「パッケージ」タブ→「アップロード」をクリックします。
「パッケージ-アップロード」画面が表示されます。
「Browse」からアップロードするapkファイルを選択し「アップロード」をクリックし、アップロードが完了すると「パッケージ」タブにパッケージ名、バージョン名、バージョンコード、状態(uploaded)が表示されます。
アップロードしたアプリをGateboxで動かす
以下の手順を実施することでGatebox上でアプリを動作させることができます。
- App Marketで作成したアプリのプランを購読する
- デバイス管理システムにテスター登録したユーザーでサインインする
- デバイス管理システムで新規本体登録をする
- デバイス管理システムの「Gateboxアプリ設定」画面で作成したアプリバナーの画像をタップする
上記を実施することで、Gateboxでアプリが起動するようになります
パッケージを審査提出する
作成したapkに問題ないことが確認出来たら審査提出をします。
※「お問い合わせください」といった文言が表示されている場合は、Gatebox社の問い合わせ窓口までお問い合わせください。
Developer Consoleの「パッケージ」タブ→審査提出をクリックすると、「パッケージ-審査提出」画面が表示されます。
コメント欄に特記事項を入力し、「提出」をクリックしますすると「パッケージ」タブの状態が「review」に変わります。
審査結果をお待ちください
審査結果が「reject(否決)」だった場合
Developer登録したメールアドレスにrejectのメールが送信されます。
rejectの理由はメールおよびDeveloper Consoleの「パッケージ」タブに記載されていますので記載内容を確認し、ご対応ください。
rejectの理由への対応が完了したパッケージを再度審査提出してください。
パッケージをアップデートする
パッケージをプロダクト環境で配布するには、審査を経る必要があります。
パッケージをアップデートする場合は以下に注意の上apkをアップロードし、審査提出をします。
・パッケージ名が同一である
・バージョンコードが以前の値より大きい
審査提出をすると状態が「review」に変わりますので、審査結果をお待ちください。
パッケージをプロダクト環境に反映する
審査結果が「accept」だった場合、Developer登録したメールアドレスにacceptのメールが送信されます。
「パッケージ」タブの状態も「accept」に変わっています。
acceptになることでパッケージをプロダクト環境に反映できるようになり、反映することで一般ユーザー向けに承認されたアプリケーションが配布されるようになります。
「パッケージ」タブ→「プロダクト環境反映」をクリックすると、「パッケージをプロダクト環境に反映」画面が表示されます
公開しても問題ない場合は、同意するにチェックを入れ、「プロダクト環境に反映する」をクリックすることで、サンドボックス側には「プロダクト環境に反映済みです」と表示されます
プロダクト側に反映され、状態が「publish」になり、画面右上部にプロダクトに反映したapkの「バージョン名」と「バージョンコード」が表示されるようになります
Webhook
Webhookの設定をする
アプリが購読・解約されたり、追加コンテンツの販売が行われたことを通知するWebhookを設定することで、ユーザーの行動に対してタイムリーな対応を実装することができます。
本項では、そのWebhookに関して記載します。
※Webhookは、その到達を保証するものではありません、アプリ実装においてこのWebhookが確実に届くことを期待した設計をすることは推奨されません。確実にエンドユーザーの購買行動を知るためには、Receipt APIを利用してください。
※Webhookは、送信リトライを行うことがあります。
Webhookメッセージの定義は以下の通りです。
- id : string : メッセージごとに発行される一意なIdです。
- topic : string : Platformが利用する識別子です。通常は利用しません。
- subject : string : メッセージが関連するEventのタイプ、Applicationの種類、Developerの識別が含まれます。
- eventType : string : どのイベントのメッセージなのかの識別子です。
- eventTime : DateTime : Eventの発行時刻(UTC)です。
- data : object : メッセージデータです。Event毎に内容は異なります。
- dataVersion : string : 将来利用用です。
- metadataVersion : string : 将来利用用です。
Webhook設定では、以下のイベント通知を受信することができます。
SubscriptionCreate
新たにアプリケーションプランの購読が行われた際に発行されます。
{
"id": "48479d9f61094e87ba03871254bfe721",
"subject": "application/{application_id}/plan/{plan_id}/customer/{customer_id}/subscription/create?developerId={developer_id}",
"data": "{\"application_id\":\"{application_id}\",\"plan_id\":\"{plan_id}\",\"customer_id\":\"{customer_id}\"}",
"eventType": "SubscriptionCreate",
"eventTime": "2019-10-19T10:44:50.3256829Z",
"metadataVersion": "1",
"dataVersion": "1.0"
}
SubscriptionUpdate
購読されているアプリケーションプランが変更された際に発行されます。
{
"id": "401cb0193b93423f95e5d7918549dc2b",
"subject": "application/{application_id}/plan/{plan_id}/customer/{customer_id}/subscription/update?developerId={developer_id}",
"data": "{\"application_id\":\"{application_id}\",\"plan_id\":\"{plan_id}\",\"customer_id\":\"{customer_id}\"}",
"eventType": "SubscriptionUpdate",
"eventTime": "2019-10-19T10:49:31.8481388Z",
"metadataVersion": "1",
"dataVersion": "1.0"
}
SubscriptionClose
アプリケーションプランの購読が終了した際に発行されます。
{
"id": "6c229d4c6d2b4d9ab30dcbb379133d9e",
"subject": "application/{application_id}/plan/{plan_id}/customer/{customer_id}/subscription/close?developerId={developer_id}",
"data": "{\"application_id\":\"{application_id}\",\"plan_id\":\"{plan_id}\",\"customer_id\":\"{customer_id}\"}",
"eventType": "SubscriptionClose",
"eventTime": "2019-10-19T10:52:10.7918018Z",
"metadataVersion": "1",
"dataVersion": "1.0"
}
AdditionalContentSold
アプリケーション追加コンテンツが購入された際に発行されます。
{
"id": "861ad1921c0d4b26830c8519f5e1ea34",
"subject": "application/{application_id}/additional_content/{additional_content_id}/customer/{customer_id}/order/sold?developerId={developer_id}",
"data": "{\"id\":\"{sale_id}\",\"application_id\":\"{application_id}\",\"additional_content_id\":\"{additional_content_id}\",\"customer_id\":\"{customer_id}\"}",
"eventType": "AdditionalContentSold",
"eventTime": "2019-10-19T10:54:43.3991919Z",
"metadataVersion": "1",
"dataVersion": "1.0"
}
アプリのApp Market公開
アプリをApp Marketに公開する
ここまでの作業を行うことで、アプリをApp Marketに公開するための情報がそろいます。
App Marketにアプリを公開することで、App Marketの一覧にアプリが表示され、一般ユーザーがアプリのページにたどり着くことができるようになります。
「App Market公開」タブ→「設定」をクリックします。
「App Market公開設定」画面が表示されますので、「公開する」をクリックします。
「App Market公開」タブに「公開中」と表示されるようになり、App Market表示されるようになります。
ニュースレター
一般ユーザーにニュースレターを送る
アプリに更新があったり、メンテナンスの通知を送る必要がある場合にはDeveloper Consoleから、アプリのプラン購読中のユーザーにメールを送信することができます。
アプリの画面上部の「ニュースレター」をクリックすると、「ニュースレター送信」画面が表示されます。
送信先は「すべての購読者」と「特定のプランの購読者」を選択できますので場合に応じて選択してください。
レポート出力と売上金の支払い
アプリケーションをプロダクト環境で配布するにあたり、料金を設定している場合には定期的に開発者へ支払いが行われます。
本項では、そのレポート取得と、開発者への支払いに関して説明します。
レポートを出力する
アプリを配信した後は、そこで加入されたプランや追加コンテンツの状況を把握し、サービス改善につなげていくことも重要です。
Developer Consoleではプランの購読や追加コンテンツの購入の履歴をcsv形式で出力することができます。
アプリ一覧画面の上部の「レポート」をクリックします。
レポート画面が表示されますので、出力したいレポートと期間を選択して「ダウンロード」ボタンをクリックしてください。
レポート内の項目については以下の画像を参照してください
支払いタイミングと収益率
アプリケーションのプランと追加コンテンツの売上は、発生から30日経過すると送金対象となり、毎月15日(銀行が休日だった場合には、それ以前に)開発者の銀行口座に送金されます。
30日の間に、トラブル等でプラットフォームから返金処理が行われた場合、その分を減じます。
開発者が受け取る金額は、税込み総額の80%です。
例:税込み総額110円の場合、開発者が88円を受け取り、うち8円が消費税分となります。
バッジに関するガイドライン
- バッジは、Gateboxが配布するファイルのままの状態で利用してください。
- バッジのサイズは、配置に合わせて変更して問題ありませんが、縦横比を変更してはいけません。
- バッジのサイズは、すべてのテキストが判読可能な大きさの範囲で設定してください。
- バッジの言語は、日本語と英語を提供していますがその他の言語への改変はしないでください。
- バッジをハイパーリンクで利用する場合は、Gatebox App Marketトップもしくは対象アプリのURLにリンクさせる必要があります。
- バッジは、Gatebox App Marketで配信しているコンテンツのマーケティングでのみご利用いただけます。
- バッジをウェブサイトやスマートフォンアプリ以外の媒体(テレビ、印刷物、屋外看板等)で利用する場合には こちら までお問い合わせください。