リモート通知を活用しよう! ~ゲーム運営の効率化を目指して~

皆様はじめまして、デベロッパーソリューショングループのJr.(ジュニア)と申します。

普段はMobage Developers Japan(デベロッパーサイト)の開発、保守、運用に携わっております。よろしくお願い致します。

 

今回はMobageにおけるリモート通知の使い方とゲーム運用における使い分けと活用法について解説いたします。

 

Mobage Developers Japan(デベロッパーサイト)では、昨年12月にリモート通知の予約機能をリリースしました。Mobage Developers Japan(デベロッパーサイト)のリモート通知予約機能および、Mobage APIのリモート通知機能を皆様に活用していただき、ソーシャルゲーム運用の一助にしていただければ幸いです!

 

1 はじめに

リモート通知とは、主にゲーム運営側からゲームユーザに通知を送るために使われる機能のことです。ユーザはゲーム運営側からのメッセージを受信できます。リモート通知は、Android, iOS向けのネイティブのゲームで利用でき、AndroidではGCM, iOSではプッシュ通知(APNs: Apple Push Notification)と呼ばれています。DeNAの内製タイトルでも幾つか利用されています。

続く第2章で紹介するとおり、リモート通知機能は、ソーシャルゲームの運営に役立つとともに、その使い方もいたってシンプルなものです。

この記事をきっかけにして、ご活用いただければ、大変嬉しく思います!

 

2 リモート通知の活用法

リモート通知の利用場面は多岐にわたり、非常に便利です!

例えば、DeNAの内製タイトルの「パズ億」・「三国志ロワイヤル」では次のような場面でリモート通知を利用しています。

  • 新ステージを追加した時(スクリーンショット参照)

  • ゲームのアップデートがある場合

  • イベント(CPN)を実施する場合

  • ユーザにアイテムを付与する場合

リモート通知はアプリが起動していない時に、モバイル端末がサーバからの通知を受け取ることができるため、 ユーザにゲームを起動してもらう動機となります

image2.png

一方でリモート通知はユーザがオフに出来てしまったり、アプリ起動中のユーザには届かないため、重要な情報を通知する際は、他の連絡手段を利用するか、併用することをおすすめ致します。

例えば、DeNAの内製タイトルである「三国志ロワイヤル」では、不具合に関する情報をリモート通知で送信することを検討しましたが、この情報はアプリの起動中のユーザに届いてほしい情報なので、バグ情報はゲーム内のお知らせページにてユーザに伝えることにしました。

 

3 リモート通知の利用法

Mobageのオープンプラットフォーム向けに開発したゲームでリモート通知をするためには、Mobage Developers Japan(デベロッパーサイト)のリモート通知予約機能を利用する方法、Mobage APIを叩くプログラムを作る方法の2つがあります。


その2つの方法と使い分けについて説明します。

 

3.1 Mobageでリモート通知する機能

Mobage Developers Japan(デベロッパーサイト)のリモート通知予約機能を利用する方法では、送信するメッセージと、送信日、送信時刻、宛先をユーザIDもしくはデバイスの種類で指定してリモート通知を送信できるため、次の条件を全て満たしている場合に適しています。

  • テキストのみ送信したい場合

  • 宛先のゲームユーザをユーザID、もしくはデバイスで絞り込みたい場合

  • リモート通知を指定した時刻に送信したい場合

Mobage APIを利用して送信する方法では、柔軟に送信タイミング、宛先、リモート通知のパラメータを設定できるため、次のような場合に適しています。

  • iOSのAPNs特有の機能やGCM特有の機能を利用したい場合

  • 最後にログインしてから4日経過したユーザにのみ通知を送るなど、複雑な条件で宛先のゲームユーザを選択したい場合

  • 毎週木曜日に送信するなど、送信タイミングが複雑な場合

APNsでは、テキストをユーザに送信するだけでなく、プッシュ通知受信時にユーザの端末でサウンドを鳴らしたり、ユーザのアイコンのバッジ表示を変えたり出来ます。(※1)

上記使い分けの事例として、DeNAの内製タイトルであるマジック&カノンでは、Restful APIを叩くプログラムを作成し、cronに登録して、指定時刻にリモート通知を送信する仕組みを作っています。また、単純に時刻を指定して、リモート通知するだけでなく、前回ログインからある時間経過したユーザに対して、リモート通知が届くようなスクリプトも書いています。

------------------

※1 ただし、Mobage API を利用したリモート通知の送信では、ユーザーの自由文の送信は認められていません。必ず定型文での送信をお願いします。

 

3.2 リモート通知の使い方

実際にAndroidアプリを例にMobage APIとMobage Developers Japan(デベロッパーサイト)を使ってみましょう。 (※2)

Mobage Developers Japan(デベロッパーサイト)でリモート通知をするための、大まかな手順は、

  • ゲーム側の実装

  • Mobage Developersでリモート通知の予約設定

となります。リモート通知のAPIを直接叩く場合の大まかな手順は、

  • ゲーム側の実装

  • APIを叩くスクリプトの作成

  • スクリプトの実行

となります。

------------------

※2 Mobage Developers Japan(デベロッパーサイト)でアプリの登録が完了している前提でお話します。 Mobage Developers Japan(デベロッパーサイト)において、アプリ登録が完了していない方は、アプリケーションの開発から公開までの記事をご参照ください。

 

3.2.1 リモート通知を受信できるアプリの起動

まずは、リモート通知を受信できるようにゲームを実装する必要があります。

実装手順は、複雑なので、本記事では、サンプルコードを用意してあります。リポジトリ内のREADMEを参考に動作させてください。詳細な実装方法は、Android用NativeSDKのセットアップ方法リモート通知の使い方にありますので、既存のゲームに組み込みたい方はこちらをご参照ください。

 

3.2.2 Mobage Developersのリモート通知

アプリの実装が完了したら、実機で起動して、アプリをバックグラウンドにしておきましょう。

その後、Mobage Developers Japan(デベロッパーサイト)にログインし、アプリケーション詳細ページに遷移して、次の画像のメニューをクリックしてください。

遷移先の画面に画面右上の新規作成ボタンをクリックすると、リモート予約の作成画面にたどり着きます。

image3.png
image4.png

すぐにリモート通知を確認できるようにするために、本日の2分後にメッセージが届くようにしてみましょう!送信時刻を2分後程度に設定して、日付指定方法を「日付指定予約」、ターゲットを「Game to All User」に設定して、送信先デバイスがAndroidであることを確認して、メッセージに任意の文字列を設定しましょう。すると、次のような画面になりますので、「入力内容確認」ボタンを押してみましょう。

image5.png

これで、リモート通知の予約は完了です!2分待つとAndroidの端末に次の画像のようにメッセージが届きます。

image6.png

なお、リモート通知予約機能は様々な制限があるため、先ほどのリモート通知を作成する際に利用したページのフォーム付近の注意文言にご注意ください。例えば、Android版のゲームのインストールユーザ全てにリモート通知を送信する場合、1時間に一つの通知しか送信できませんのでご注意ください。

このようにMobage Developers Japan(デベロッパーサイト)のリモート通知予約機能を利用すると、簡単な操作でリモート通知を送信することができるため、送信タイミングが時刻のみで定まり、メッセージのみを送信したい場合はご利用をおすすめします!

 

3.2.3 Restful APIを利用したリモート通知

Mobageでは、リモート通知をするためのAPIも用意されています。 この機能の場合、自前でプログラムを書くことになります。

実行すると先ほどのユーザにリモート通知を送信するプログラムをPerlで書いてみましょう。必要な知識は次のとおりになります。

リモート通知APIの利用方法によると、user_idが10258のユーザにリモート通知を送信するには、リモート通知API用のURLに次のリクエストを送信します。Sandbox用のドメインは「http://sb.sp.mbga-platform.jp/」なので、こちらのURLにリクエストを送信することになります。

POST /social/api/restful/v2/remote_notification/@app/@all/10258
Content-Type: application/json; charset=utf-8
Authorization: OAuth realm="", oauth_consumer_key="31816a6d9beac8c11bc5", oauth_nonce="5f5ae6a5688795cab25d", oauth_signature="tuLm4o%2FvwzdQK%2FuWAGii9ab3ZiI%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1331798463", oauth_version="1.0"

{
    "payload" : {
        "message": "Simon! Come join my quest.",
        "extras": {
            "foo": "1",
            "bar": "twenty one!"
        }
    }
}

201 Created

PerlでこのようなPOSTリクエストを送信するためのサンプルプログラムは次のようになります。

use OAuth::Lite;
use OAuth::Lite::Consumer;
use JSON;
 
sub send_remote_notification_to_single_user {
    my ($user_id, $request) = @_;
 
    # リモート通知APIのsandbox用URLです。
    my $request_url
        = "http://sb.sp.mbga-platform.jp/social/api/restful/v2/remote_notification/\@app/\@all/${user_id}";
 
    my $oauth = OAuth::Lite::Consumer->new(
        consumer_key    => '{consumer_key}',
        consumer_secret => '{consumer_secret}',
        realm           => '',
    );
 
    my $res = $oauth->request(
        method  => 'POST',
        url     => $request_url, 
        content => to_json($request)
    );
}

send_remote_notification_to_single_user({user_id}, +{
    payload => +{
        message => "RestfulAPI テストメッセージです",
        extras  => +{
        },
    },
});

OAuthのリクエストを簡単に送信できるOAuth::Liteモジュールを利用して、2-legged OAuthをするためのパラメータをセットしたPOSTのHTTPリクエストを生成して送信しています。このスクリプトを動かすためには、依存モジュールをcpanやcpanmなどでインストールし、コード中の{consumer_key}, {consumer_secret}をMobage Developers Japan(デベロッパーサイト)のアプリケーション詳細ページのMobage共通タブの下部の次のページの値で置き換えてください。

{user_id} は、リモート通知用アプリを起動させると、EclipseのLogcatのログに、「Login completed: {user_id}」という形で出力されてるため、そこで確認した値を入力してください。スクリプトを実行すると、次の画面のように携帯端末にリモート通 知が届きます。

image7.png


4 最後に

ここまで読んでいただきありがとうございました。このようにMobageオープンプラットフォームでは、Mobage Develpers Japan(デベロッパーサイト)のリモート通知予約機能を用いて、少ない手間でリモート通知を送信する方法や、Restful APIを叩いて柔軟にリモート通知をする方法が用意されています。場面に応じて使い分けてソーシャルゲームの運用効率化にお役立てください!

------------------

Mobage Developers Japan(デベロッパーサイト)の機能や記事に関するフィードバックやお問い合せなどがありましたら、お気軽にコメントやMobageオープンプラットフォーム事務局までお問い合わせください。(パートナー様はこちらから)