WeChatミニゲームのサブスクリプションメッセージ連携のベストプラクティス
ミニゲームは現在のゲーム業界で注目を集める成長分野であり、ミニゲーム市場に参入するゲーム会社が増えています。
ミニゲームはミニプログラムを基盤とするゲーム製品の形態で、ダウンロード不要、タップしてすぐ遊べるといった特徴があります。アプリ形態のゲームと比べて、開発投資が少ない、ユーザーの増加が見込める、ユーザー獲得の恩恵を受けやすいといった明確な利点があります。
中でも、WeChatのサブスクリプションメッセージはapiを呼び出してパーソナライズされたプッシュを実現でき、AEのエンゲージモジュールと連携して、パーソナライズされたきめ細かなエンゲージを実現することもできます。
本記事では、ミニゲームのエンゲージにおけるAEエンゲージモジュールのベストプラクティスを具体的に説明します。
1. WeChatのサブスクリプションメッセージとは
WeChatは、自身の通知チャネルを基盤として、ユーザーに効率よくリーチできるサブスクリプションメッセージ機能を開発者に提供しています。これにより、サービスのループを完結させ、より良い体験を提供できます。
開発者はゲーム内でユーザーにメッセージのサブスクライブを依頼できます。ユーザーがサブスクライブに成功したかどうかと、成功した回数は、開発者が自身のバックエンドで記録する必要があります。
ユーザーがミニゲーム内で指定のメッセージ内容をサブスクライブすると、開発者はバックエンドからメッセージ送信のAPIを使ってテンプレートメッセージを1件ユーザーに送信でき、ユーザーは最終的にWeChatの「サービス通知」でそれを受け取ります。
ユーザーが1回サブスクライブに成功すると、開発者はゲームが適切と判断したタイミングで、そのユーザーにテンプレートメッセージを1件送信できます。
2. WeChatミニゲームのバックエンドの準備
2.1 事前準備
WeChatミニプログラムを申請し、届出と認証を完了する
ミニプログラムの【サービスカテゴリ】= ゲーム
2.2 APP IDとAPP Secretの取得
ミニプログラムやアプリケーションのセキュリティと安定性を確保するための、重要な識別子とキーです
- Appid:アプリケーションの一意の識別子で、主にWeChat開発者ツールでの開発やデバッグに使用します。システムによって自動生成され、各ミニプログラムやアプリケーションの一意性が保証されます。データベースでの追加や検索に使いやすく、すばやく検索・管理できます。
- Appsecret:アプリケーションのキーで、主にデータの暗号化や復号などの操作に使用します。パスワードのようなもので、データの安全性と正確性を保証し、システムの信頼性と可用性を高めます。appsecretは一般的なパスワードのセキュリティ要件に従って生成され、その強度と安全性が確保されています。
開発者は、不正アクセスやデータ漏えいを防ぎ、ミニプログラムやアプリケーションのセキュリティと安定性を確保するため、自身のAppidとAppsecretを適切に保管する必要があります。
2.2.1 取得方法
WeChatミニプログラムの管理画面で [開発] - [開発管理] - [開発設定] に進みます。初回ログイン時に、システムが自動生成したAPPIDとAPPSecretを取得できます
APPSecretはデフォルトでは平文で保存されません。初回にキーを取得したら、適切に保管してください
2.2.2 更新方法
APPSecretは初回生成時にのみ平文で表示されます。忘れたり紛失したりした場合は、「リセット」ボタンでキーを再取得する必要があります。
キーをリセットする権限は管理者にのみあります。
各アカウントでは毎月、API呼び出し回数のリセットと本APIを合わせて10回までクリア操作を行えます。クリアが1回有効になるたびに1回分を消費します。
⚠️ 注意:キーをリセットしたときは、AEエンゲージモジュールの該当チャンネルのキーも同時に更新して再接続してください。そうしないと、関連するエンゲージタスクが無効になります。
2.3 テンプレートの設定
2.3.1 テンプレートの作成方法
WeChatミニプログラムの管理画面で [サブスクリプションメッセージ] - [公開テンプレートライブラリ] に進み、テンプレートライブラリの内容を確認します。WeChatミニゲームの管理画面には、膨大なメッセージサブスクリプションのテンプレートライブラリが用意されています。メッセージプッシュのシナリオに合ったテンプレートを「選択」し、必要なキーワードを選んで「提出」すると、カスタムテンプレートを作成できます。
2.3.2 マイテンプレート
公開テンプレートライブラリから選択して提出すると、 [マイテンプレート] で、現在のミニゲームのサブスクリプションメッセージでプッシュできるすべてのテンプレートを確認できます。
AEエンゲージモジュールの【Wechat - サブスクリプションメッセージチャンネル】では、該当するミニゲームのすべてのテンプレートの取得/更新に対応しています。
該当するテンプレートの [詳細] を開くと、テンプレートID、テンプレートパラメータとそのデータタイプを確認できます。
3. AEサードパーティチャンネルとの連携
3.1 OpenIDの送信
テンプレートのサブスクリプションメッセージをAEのプッシュチャンネル経由でユーザーに届けるには、WeChatミニプログラムのOpenIDをAEシステムに送信してユーザープロパティに紐付け、エンゲージタスクのWeChatサブスクリプションメッセージのプッシュに使用できるようにする必要があります。技術ドキュメントはWeChatサブスクリプションメッセージ接続ドキュメントを参照してください
3.2 WeChatサブスクリプションメッセージチャンネルの作成
3.2.1 アプリ認証
「アプリ認証」の入口から、WeChatミニプログラムのテンプレート情報の呼び出しを認可できます。
同じミニプログラムでは同じAPP IDとAPP Secretを共有するため、認可は1回だけで済みます。
キーの取得方法の詳細:
【サードパーティ】チャンネルの右上にある「アプリ認証」をクリックすると、図の画面に移動します。アプリケーション名を自由に設定し、【ステップ2.2】で取得したミニプログラムのAPP IDとAPP Secretを入力します。
入力した情報が正しければ、「接続して保存」をクリックすると、システムに接続成功と表示されます。
AppIDとAppSecretが有効と検証されると、access_tokenが2時間ごとに自動更新され、アプリの接続状態が正常に保たれます。
3.2.2 チャンネル新規作成
サードパーティ - WeChatサブスクリプションメッセージの右上にある +チャンネル新規作成 をクリックすると、サブスクリプションメッセージチャンネルの作成ページに移動します。
-
チャンネル名:WeChatサブスクリプションメッセージチャンネルの名前
-
認可アプリを選択:チャンネルの新規作成時に、接続状態が正常なアプリを選択できます。チャンネルはそのアプリのWeChatバックエンドで利用可能なすべてのサブスクリプションメッセージテンプレートを自動で取得します。アプリの接続状態が異常な場合は、まず「アプリ認証」で確認してください。
-
ユーザー Open ID:メッセージを受信するターゲットユーザーのIDタイプです。ユーザープロパティ(数値および文字列タイプのプロパティ)を選択できます。ターゲットユーザーの推定人数を算出する際、送信IDが空のユーザーは除外されます。OpenIDの送信方法は技術ドキュメントを参照してください。
-
ミニプログラム設定:サブスクリプションメッセージのカードをクリックしたときにミニプログラムの画面へ遷移するための設定です。これはチャンネルの粒度のパラメータ設定で、タスクの粒度で上書きできます。
- ミニアプリタイプ:formal(正式版)、developer(開発版)、trial(体験版)があり、入力しない場合はデフォルトで正式版になります
- ミニアプリ言語:zh_CN(中国語(簡体字))、en_US(英語)、zh_HK(中国語(繁体字))、zh_TW(中国語(繁体字))があり、入力しない場合はデフォルトでzh_CN(中国語(簡体字))になります
- 転送先URL:テンプレートのカードをクリックした後の遷移先ページで、このミニプログラム内のページに限られます。パラメータ付きに対応しています(例:index?foo=bar)。このフィールドを入力しない場合、テンプレートからの遷移はありません。
-
コンテンツテンプレート:
WeChatミニゲームのプッシュメッセージは、ユーザーがサブスクライブに成功した後でなければ、ユーザーのWeChatメッセージに送信できません。
アプリの認可と接続に成功すると、チャンネルはtokenを使って、WeChatバックエンドでユーザーが作成したすべてのサブスクリプションメッセージテンプレートを一度に取得できます。必要なテンプレートをチャンネルに保存し、エンゲージタスクで選択して使用できます。
【テンプレートリストを更新】ボタンをクリックすると、APIを再度呼び出してチャンネルの新しいテンプレートリストを取得できます。
- コンテンツテンプレートのパラメータが対応するすべてのタイプ
テンプレート内のパラメータのデータタイプはWeChatのメッセージテンプレートで定義されており、取得したパラメータタイプが優先されます。
| WeChatパラメータの対応カテゴリ | WeChatのデータタイプ | Mapping エンゲージの入力方法 | 説明 | パラメータ仕様の制限 |
|---|---|---|---|---|
| thing.DATA | 事物 | 動的テキスト | 漢字、数字、英字、記号の組み合わせが可能 | 20 |
| number.DATA | 数字 | 数値 | 数字のみ、小数可 | 32 |
| letter.DATA | 英字 | テキスト | 英字のみ | 32 |
| time.DATA | 時間 | 時間 | 24時間制の時刻形式(年月日の追加に対応)。時間帯の入力に対応し、2つの時点は「~」記号でつなぎます | |
| date.DATA | 日付 | 日付 | 年月日形式(24時間制の時刻の追加に対応)。時間帯の入力に対応し、2つの時点は「~」記号でつなぎます | |
| symbol.DATA | 記号 | 動的テキスト | 記号のみ | 5 |
| amount.DATA | 金額 | テキスト | 通貨記号1つ+10桁以内の数字のみ。小数可、末尾に「元」を付けられます | 11 |
| phone_number.DATA | 電話番号 | テキスト | 数字、記号 | 17 |
| car_number.DATA | ナンバープレート | テキスト | 8文字以内。最初と最後の文字は漢字可、それ以外は英字または数字 | 8 |
| name.DATA | 名前 | テキスト | 10文字以内の漢字のみ、または20文字以内の英字・記号のみ | 漢字 10 英字 20 |
| phrase.DATA | 漢字 | テキスト | 5文字以内の漢字 | 5 |
3.2.3 チャンネルの管理
-
チャンネルの有効化/無効化
- チャンネルスイッチをONにした後、アプリの接続に成功していればチャンネルは「接続正常」状態になり、そうでなければ「接続異常」状態になります。
- チャンネルを有効にすると、新しいタスクを作成するときにそのチャンネルを選択できます。
- チャンネルを無効にすると、新しいタスクの作成時に選択できなくなり(ドロップダウンに表示されません)、実行中のタスクは自動的に終了し、承認中のタスクは自動的に撤回されます。
-
チャンネルの編集/削除
チャンネルは無効にした後でなければ、編集や削除の操作を行えません。
3.3 エンゲージのプッシュタスクの作成
Wechat - サブスクリプションメッセージチャンネルを選択してタスクを作成します
リーチ方法の選択とチャンネルの選択は、同じポップアップの2つのステップです。「Wechat - サブスクリプションメッセージ」カードをクリックすると、ポップアップが直接チャンネルリストに切り替わります。有効なチャンネルを選択して「確認」をクリックすると、タスクの編集ページに移動します
プッシュ内容で使用したいテンプレートを選択し、送信する内容を入力します
保存して提出し、承認されるとエンゲージタスクがオンラインになります。
3.4 テスト送信
テスト方法1:
タスク編集ページの「プッシュ内容」の下部にある「テスト送信」をクリックすると、該当するアカウントにテストメッセージを送信できます。タスクは作成されません。テンプレートのパラメータをすべて入力するまで、このボタンはグレーアウトして使用できません。ポップアップには、チャンネルの「ユーザー Open ID」プロパティに対応する送信IDを入力します:
テスト方法2:
実際のエンゲージタスクをオンラインにし、「ターゲットグループ」のセグメントでターゲットのテストアカウントを選択すると、そのアカウントだけに配信され、他のユーザーには届きません。
4. サブスクリプションメッセージの送信可能回数のメカニズム
4.1 シナリオの説明
WeChatミニゲームのチャンネルでテスト送信をすると、1回目は送信に成功しても、2回目に送信すると失敗し、「user refuse to accept the msg.」というメッセージが表示されることがあります。
4.2 原因
現在、WeChatミニゲームは「一回限りのサブスクリプションメッセージ」にのみ対応しており、1回のサブスクライブで送信できるメッセージは1件だけです。
サブスクリプションメッセージのタイプ
(1)一回限りのサブスクライブ:ユーザーが自らサブスクライブすると、期限なく対応するサービスメッセージを1件送信できます。1回のサブスクライブで送信できるメッセージは1件だけです。
(2)長期サブスクライブ:ユーザーが1回サブスクライブすると、長期にわたって複数のメッセージを送信できます。長期サブスクライブは資格要件が非常に厳しく、現在、長期サブスクリプションメッセージは行政・公共、医療、交通、金融、教育などのオフライン公共サービスにのみ開放されています。今後、その他のオフライン公共サービス業務にも順次対応する予定です。
1回のサブスクライブで送信できるメッセージは1件だけですが、ユーザーのサブスクライブ回数は累積できます。
事例:WeChatミニゲームのテンプレートAのサブスクライブコードを「ギフトパック」ボタンに紐付ける(つまり、ギフトパックを1回開くたびに、テンプレートの登録ロジックが1回呼び出される)
この場合、ユーザーがギフトパックボタンをクリックした回数だけ、サブスクライブ回数が累積されます
- 1人のユーザーが受け取れるサブスクリプションメッセージの回数は、そのユーザーがゲーム内でサブスクライブのメカニズムをトリガーした回数に関係します。
- 同じテンプレートメッセージでも、ユーザーAは複数回受け取れる(複数回サブスクライブを累積している)一方、ユーザーBは1回しか受け取れない(サブスクライブを1回しか累積していない)場合があります
4.3 推奨事項
- 同じWeChatサブスクリプションメッセージでも、ゲーム内のアクティブユーザーはより多くのメッセージを受け取れ、新規ユーザーや非アクティブユーザーが受け取るメッセージは比較的少なくなります。他のエンゲージ戦略と組み合わせてミニゲーム内でのサブスクライブ回数を増やし、ユーザーがより多くのプッシュメッセージを受け取れるようにすることができます。

