モバ友を招待してインセンティブを付与する

次に、友達招待サービスを利用して友達を招待し、インセンティブを付与するプログラムを開発していきます。

友達招待サービスへのリンクを貼る

まず、友達招待サービスへのリンクが貼られた画面を開発します。ここでは下記のような invite_friends.php を作成します。

前章までと同様に、前半が PHP コード部分、後半が HTML 部分に分かれています。PHP コード部分は前章と同じく、validator.php の RequestValidator クラスを利用して、Gadget サーバーからのリクエストの妥当性検証を行います。

HTML 部分では、A タグの href 属性に invite:friends?.... という文字列を指定しています。この指定は、Gadget サーバを通した際に友達招待サービスへのリンクに自動的に変換されます。このチュートリアルでは友達招待サービスのパラメータとして、url と image を指定しています。url には友達招待後に遷移する URL を URI エスケープして指定します。ここでは http://dev.gameserver.com/invite_friends_finish.php という URL へ遷移します。また、image には招待されたユーザに送られるミニメ内で表示する画像の URL を、同じく URI エスケープして指定します。このチュートリアルでは http://dev.gameserver.com/img/invite.gif という画像を表示させるように指定しています。

招待時にインセンティブを付与する

このセクションでは、招待ミニメの送信が完了した時点でインセンティブを付与する方法について説明します。インセンティブを付与する方法については、「招待時に付与する場合」と「招待が成立した場合」で方法が異なります。ここでは前者を解説し、後者はこの後のセクションで解説します。前セクションの url パラメタに指定したパスに、下記の PHP コードを invite_friends_finish.php というファイル名で設置します。

前半の PHP 部分のうち、妥当性検証の部分は invite_friends.php と同様です。

この PHP コードの URL に遷移する際に、自動的に invite_member パラメータに招待されたユーザ ID (複数の場合はカンマ区切り) が付与されます。$number には招待したユーザーの人数が入ります。この $number の値や $invitees を利用して、「○人以上を招待した人には△△をプレゼント!!」などのインセンティブ付与が可能になります。

招待が成立した場合にインセンティブを付与する

このセクションでは前のセクションで行ったライフサイクルイベントの設定を利用し、招待されたユーザが実際にアプリをインストールした際に「招待した側」のユーザーにインセンティブを付与する方法を解説します。
下記の PHP コードを lifecycle_event_addapp.php というファイル名で設置します。この PHP のコードは、ライフサイクルイベントが発生した際に、プラットフォーム側のサーバーからリクエストされ呼び出されます。

ライフサイクルイベントは Gadget サーバーからのリクエストではありませんが、今までと同様に妥当性検証が必要です。

addapp のライフサイクルイベントの場合は、リクエストパラメーターの mbga_invite_from に招待元ユーザーのユーザーIDが付与されてきますので、このユーザーにゲーム内のアイテムなどを報酬として付与する処理を行います。尚、招待経由ではなくアプリケーションがインストールされた場合も、addapp のライフサイクルイベントは発生しますが、mbga_invite_from のリクエストパラメーターは付与されません。

最後に OK という文字列を返して、HTTP ステータスコード 200 を返します。

gadget.xmlにライフサイクルイベントを登録する

gadget.xml にライフサイクルイベントを登録することで、ライフサイクルイベントが発生した際にイベントを検知する事ができるようになります。このチュートリアルでは、下記のように gadget.xml に Link タグを追記し、event.addapp を検出できるように設定します。パラメータは rel, href, method の三つを指定します。rel にはイベントの種類を指定します。このチュートリアルでは event.addapp を指定し、(招待したユーザーが) アプリをインストールしたというイベントを検出します。href には、イベント通知を受け取るためのエンドポイント URL を指定します。ここでは http://dev.gameserver.com/lifecycle_event_addapp.php という URL を指定します。method には "GET" を指定し、先の URL には GET でアクセスするように設定します。

gadget.xmlを更新したら、キャッシュをクリアしなければなりませんので、デベロッパーサイト上の「アプリケーション詳細」画面共通設定タブにある「再読み込み」ボタンを押して、下記のように addapp event 用の URL が表示されれば、登録完了です。

 招待する側のユーザー(以下、SandboxUser1)と招待される側のユーザー(以下、SandboxUser2)の二つ分テストユーザーを準備しておきます。既に SandboxUser1 は作成済みですので、こちらのチュートリアルで作成した手順と同様の手順でもう一つのテストユーザーである SandboxUser2 を作成します。

作成した二人のテストユーザーを友達に設定するには、Sandbox支援機能を利用します。 http://sb-sp.mbga.jp/_sandb_top にブラウザーからアクセスしてください。

  • もしログインしている場合は、一旦ログアウトして、再度 SandboxUser1 でログインしてください。

「アカウント一覧」をクリックします。

テストユーザーの一覧が表示されますので、招待される側である SandboxUser2 を選択します。

プロフィールページが開きますので、「友達希望する」のリンクを選択して、友達申請を行います。

次に、 SandboxUser1 をログアウトし、 SandboxUser2 で Sandbox支援機能のページにログインします。

マイページを表示し、「ミニメール」のリンクを選択して、友達申請を承諾します。

画面の遷移に従って申請を承諾します。

これで、SandboxUser1 と SandboxUser2 は友達になりました。

実機で確認する

では、開発した以下の PHP プログラムをゲームサーバーに配置します。

  • invite_friends.php
  • invite_friends_finish.php
  • lifecycle_event_addapp.php

また、index.html に invite_friends.php へのリンクを以下のように追加して再配置してください。

さて、前章と同様の手順でアプリケーションにアクセスしてください。以下のように、Invite Friends to This Game のリンクが追加されていますので、Invite Friends to This Game をクリックして invite_friends.php へ遷移します。

Click to Invite Friends をタップしてサービスタグの先に遷移します。

すると、友達招待画面が表示されますので、そのまま SandboxUser2 を招待します。

戻り先に指定していた invite_friends_finish.php が表示されて完了になります。

招待が完了すると、招待された SandboxUser2 に対して招待ミニメールが送信されます。招待されたユーザーである、SandboxUser2 でログインしてミニメールに記載されているURLをクリックして招待を成立させます。新しいユーザーがアプリケーションをインストールすると、ライフサイクルイベントが通知されます。

lifecycle_event_addapp.php がリクエストされ、リクエストパラメーターの mbga_invite_from に招待した側のユーザーである SandboxUser1 のユーザーIDが付与されていることをログ等で確認してください。

これで、友達を招待してインセンティブを付与するチュートリアルは完了です。

参考資料

友達招待サービスの詳細はこちらを参照してください。
Gadget XML のライフサイクルイベントの定義の詳細はこちらを参照してください。
ライフサイクルイベントの通知リクエストの詳細はこちらを参照してください。

更新履歴

  • 2012/03/01
    • 新規作成

PREVIOUS

アイテムを課金する

NEXT

友達とチャットする