颤动。如何检查自动续订订阅是否仍然有效 [英] Flutter. How to check that autorenewal subscription is still valid

查看:27
本文介绍了颤动。如何检查自动续订订阅是否仍然有效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序有1个月的自动续订订阅。当用户点击"购买订阅"按钮时,我正在将购买日期保存到共享首选项。 然后,在1个月后,我需要检查这个订阅是否仍然有效。 那么我如何才能实现它呢?

推荐答案

=从11.03.2020更新

嗨,我可以看到这篇帖子还在由人们阅读,他们正在寻找一种如何在颤动中使用订阅的方法。 在2019年期间,我制作了两个应用程序,安装了数千个,用户可以在这两个平台上购买可续订的订阅。 直到2020年2月,我一直使用Ffltter Teamhttps://pub.dev/packages/in_app_purchase的这个包,但是-没有办法在iOS中获得用户的信息来取消订阅。这不是插件的问题,而是进程的iOS方法。出于安全原因,我们应该实现我们自己的后端(顺便说一句,Google也建议这样做,但仍然不能直接从应用程序检查状态)。

所以,经过一些研究,我找到了做后台和插件的人,而且它是免费的,直到你这个月的收入低于10000美元。 https://www.revenuecat.com/ https://pub.dev/packages/purchases_flutter

我已经在我的应用程序中实现了这个插件,它工作起来非常棒。有一些很好的方法可以让你在应用程序中的任何时候获得订阅状态。我要做一个例子和一篇文章,但不确定时间。

=

从15.07.2019年起更新。只是为了节省时间。下面给出的答案是一个过时的支付插件。在那次扑翼之后,团队制作了插件 https://pub.dev/packages/in_app_purchase 我建议您使用它。

=

最好的方式是使用安全的后端服务器接收Real-time Developer Notifications。 但是,可以直接在应用程序中检查状态。 因此,当用户试图访问某些付费功能时,您可以检查他的订阅是否处于活动状态。示例如下:

使用类在某个位置创建文件

import 'dart:io' show Platform;
import 'package:flutter/services.dart';
import 'package:flutter_inapp_purchase/flutter_inapp_purchase.dart';
import 'dart:async';

class SubcsriptionStatus {
static Future<bool> subscriptionStatus(
  String sku,
  [Duration duration = const Duration(days: 30),
  Duration grace = const Duration(days: 0)]) async {
    if (Platform.isIOS) {
      var history = await FlutterInappPurchase.getPurchaseHistory();

      for (var purchase in history) {
        Duration difference =
        DateTime.now().difference(purchase.transactionDate);
        if (difference.inMinutes <= (duration + grace).inMinutes &&
            purchase.productId == sku) return true;
      }
      return false;
    } else if (Platform.isAndroid) {
      var purchases = await FlutterInappPurchase.getAvailablePurchases();

      for (var purchase in purchases) {
        if (purchase.productId == sku) return true;
      }
      return false;
    }
    throw PlatformException(
        code: Platform.operatingSystem, message: "platform not supported");
  }
}

将其导入到需要检查订阅状态并在构造函数中使用的位置。例如:

class _SubscriptionState extends State<Subscription> {
  bool userSubscribed;
  _SubscriptionState() {
  SubcsriptionStatus.subscriptionStatus(iapId, const Duration(days: 30), const 
  Duration(days: 0)).then((val) => setState(() {
  userSubscribed = val;
   }));
   }
}
变量userSubscribed中的状态将为-true或false。 (请注意,您必须将flutter_inapp_purchase添加到您的项目中)。

这篇关于颤动。如何检查自动续订订阅是否仍然有效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆