2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アプリの収益がすぐわかる!Flutter × RevenueCat × Slackで課金イベントをリアルタイム通知

Last updated at Posted at 2024-09-18

1. はじめに

モバイルアプリでの課金機能は、収益を得るために欠かせない重要な要素です。しかし、その裏側には、課金の管理やサブスクリプションの維持など、多くの手間がかかります。ここで登場するのがRevenueCatです。RevenueCatは、複雑な課金管理をシンプルにし、サブスクリプションやアプリ内購入を簡単に扱うことができる強力なツールです。

今回は、そんなRevenueCatを使って課金が発生した際にSlackでリアルタイム通知を受け取るシステムを構築します。例えば、アプリ内でユーザーが新たにサブスクリプションを開始した際に、即座にSlackでその情報をキャッチできれば、プロダクトの動向をリアルタイムで把握し、チーム全体が同じ情報を共有することができます。これにより、マーケティング戦略の調整やカスタマーサポートの迅速化にもつながります。

RevenueCatには、標準でWebhook機能が用意されていますが、無料プランでは利用できません。しかし心配は不要です。今回は、Slackが提供するWebhookを利用して、課金イベントをトリガーにして通知を受け取る仕組みを自前で構築していきます。

この記事では、すでにFlutterアプリにRevenueCatを統合し、課金処理が実装されていることを前提に、Slackへの通知部分にフォーカスして解説します。それでは、さっそく始めましょう!

2. Slack Webhookの発行

まずは、SlackでIncoming Webhookを作成し、通知を送信するURLを取得します。

手順:

  1. Slack APIのWebhooksページを参考にWebhookを送るためのSlack Appを作成。
  2. Incoming Webhookを有効にします。
  3. 発行されたWebhook URLをコピーします。このURLを使って通知を送信します。

3. 課金イベントのキャッチ

RevenueCatのaddCustomerInfoUpdateListenerメソッドを使って、購読イベントが発生した時に通知をキャッチします。

例:購読が成功したときにイベントをキャッチするコード

import 'package:purchases_flutter/purchases_flutter.dart';

void setupRevenueCat() async {
  // RevenueCatの初期化
  await Purchases.configure(PurchasesConfiguration("YOUR_REVENUECAT_API_KEY"));

  Purchases.addCustomerInfoUpdateListener((customerInfo) {
    // 課金(サブスクリプション)がアクティブかどうかを確認
    if (customerInfo.entitlements.all["your_entitlement_id"]?.isActive == true) {
      // 購読がアクティブの場合にSlackに通知を送信する
      sendSlackNotification();
    }
  });
}

このコードでは、Purchases.addCustomerInfoUpdateListenerを使用して課金イベントをキャッチしています。ユーザーが購読しているかどうかを確認し、購読がアクティブであれば、次のステップでSlack通知を送信します。

4. Slack通知の実装

httpパッケージを使用して、Slack Webhookにリクエストを送信します。Flutterのhttpパッケージは依存関係に追加する必要があります。

依存関係の追加

flutter pub add http

Slackに通知を送信するコード

次に、Slackに通知を送るための関数を実装します。

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<void> sendSlackNotification() async {
  const url = 'YOUR_SLACK_WEBHOOK_URL'; // 取得したSlack WebhookのURLを入力

  final message = {
    'text': '新しい課金イベントが発生しました!'
  };

  final response = await http.post(
    Uri.parse(url),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode(message),
  );

  if (response.statusCode == 200) {
    print('Slackに通知を送信しました');
  } else {
    print('Slackへの通知に失敗しました: ${response.statusCode}');
  }
}

この関数では、SlackのWebhook URLにPOSTリクエストを送信し、通知メッセージを送ります。課金イベントが発生した際にsendSlackNotification関数が呼ばれるように設定しておけば、リアルタイムでSlackに通知が届くようになります。

5. まとめ

簡単にRevenueCatとSlackを連携させ、課金イベントをリアルタイムでSlackに通知できました。他にも、メールやGoogle Sheets、または他のAPIと連携させることも可能です。さらに、通知内容を詳細化したり、Slackのチャンネルごとに異なるイベント通知を実装することもできます。

良いサブスクリプションライフを!!!

999. 参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?