Как получить текущий статус подписки пользователя, чтобы подтвердить, что подписка все еще действует? - PullRequest
0 голосов
/ 13 апреля 2020

Я создаю приложение-флаттер, в котором используется модель freemium.

Я использую пакет флаттера in_app_purchase в своем приложении, поэтому пользователи теперь могут перейти на платную ежемесячную подписку. Прочитав документацию https://developer.android.com/google/play/billing/billing_subscriptions#Handle -states для добавления спецификаций подписки c, он говорит, что «у вас также должны быть включены уведомления разработчиков в реальном времени», что я и сделал.

Согласно этому видео (https://www.youtube.com/watch?v=9Ta2chg_Ak4), я получу токен покупки непосредственно из Cloud Pub / Sub при каждом обновлении существующей подписки. Этот токен покупки не содержит деталей изменения. Поэтому мне нужно отправить токен покупки с моего защищенного сервера в API Google Play Developer, чтобы получить обновленную информацию, прикрепленную к токену покупки. После проверки у меня будет пересмотренная информация о подписке, которая может быть сохранена на моем внутреннем сервере, а также при необходимости отправлена ​​в мое приложение Android, чтобы обеспечить пользователям доступ к соответствующему контенту и службам в приложении.

Я использую Cloud Firestore в качестве бэкэнда для приложения.

У меня вопрос: Как получить текущий статус подписки пользователя, чтобы подтвердить, что подписка все еще действительна? Я считаю, что мне нужно использовать Purchaseases.subscription: get, который проверяет, является ли покупка подписки пользователя действительным и возвращает время его истечения (https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get) - но я не уверен, как на самом деле сделать это во флаттере. Как реализовать это во флаттере?

Заранее спасибо за помощь!

Джейсон

1 Ответ

3 голосов
/ 16 апреля 2020

С тех пор я нашел отличное решение. В конце концов, я просто использовал RevenueCat. Это обрабатывает все. Вам даже не нужно использовать Google Pub / Sub или уведомления разработчиков в реальном времени. Так намного проще! Вот документы: https://docs.revenuecat.com/docs.

После настройки, которая была довольно простой, я просто использую:

try {
  PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo();
  if (purchaserInfo.entitlements.all["my_entitlement_identifier"].isActive) {
    // Grant user "pro" access
  }
} catch (e) {
  // Error fetching purchaser info
}

Надеюсь, этот ответ поможет кому-то в будущем - это сэкономил мне так много работы и времени, как только я понял это!

...