如何在应用程序启动时检查订阅?

时间:2017-02-03 23:35:00

标签: cordova firebase ionic-framework firebase-realtime-database ionic2

我真的很享受Ionic 2应用程序的开发,但目前我的购买流程存在一些问题。

如何在应用启动时检查用户是否购买了有效产品? 我想实现以下行为:

用户已订阅 - >显示PAGE A

用户没有订阅: - >显示PAGE B

我是否必须在本地保存订阅信息?

**编辑**

我使用firebase后端并可以在那里存储购买。

这是我的功能:

buyCoach(productName: string): void {
    console.log(productName);
    InAppPurchase
        .getProducts([productName])
        .then((products) => {
            InAppPurchase
                .buy(productName)
                .then((data)=> {
                    // {
                    //   transactionId: ...
                    //   receipt: ...
                    //   signature: ...
                    // }

                    // maybe store somethign to firebase? But what?
                })
                .catch((err)=> {
                    console.log("error buy");
                    console.log(JSON.stringify(err));
                });
        })
        .catch((err) => {
            console.log("error getProducts");
            console.log(JSON.stringify(err));
        });
}

2 个答案:

答案 0 :(得分:1)

您需要身份验证和授权解决方案。 必须以某种方式识别(认证)用户。您不需要实施自己的,而是可以使用Facebook,GooglePlus或Tweeter。您可以使用Azure移动应用程序服务,允许您的用户登录这三者中的任何一个。

完成上述操作后,您可以安全地拨打您已开发的服务,让我们说出用户个人资料服务,该服务会告诉您用户拥有的订阅。

出于性能目的,您可以使用Ionic's Secure Storage插件在本地存储此信息

要导航到其他页面,您可以使用NavController.push导航到页面。

答案 1 :(得分:0)

我不知道我的问题是否正确,但您可以执行以下操作来检查用户是否已登录(通过电子邮件,脸谱,谷歌等方式登录)并且能够购买:

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

    <com.example.andy.test.CustomTriangleView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:background="@android:color/transparent"
        app:shapeColor="@color/colorAccent" />

</android.support.design.widget.AppBarLayout>

如果您试图了解用户是否购买了他离开应用时尚未完成购买,您可以执行以下操作:

  • 将用户ID保存在localStorage / SQLite上。
  • 如果用户没有帐户(如果您希望他们在不记录的情况下购买),请使用firebase方法firebase.auth().onAuthStateChanged(function(user) { // CREATES AN OBSERVABLE TO WATCH IF THE USER CHANGES IT STATES, LIKE LOGOFF if (user) { // this.rootPage = Page_A; // THE USER IS LOGGED, SHOW PAGE A } else { this.rootPage = Page_B; // USER NOT LOGGED, PAGE B } }); 和购物车信息,它会生成一个随机密钥可以使用.push()抓住promisse回报。
  • 在您的根页(A和B)中都有一个.then()方法,用于将当前商店购物车保存在其firebase节点中(使用已保存的uid)。
  • 在应用程序打开时,您可以从firebase获取商店购物车(如果存在)和itens(更喜欢在您的rootPage上使用ionViewWillLeave()或类似的内容在ionViewDidLoad()&#39; s app.component它可能会减慢你的应用程序的速度)
  • 在应用程序退出时,如果商店购物车为空,请从数据库中删除购物车节点,如果没有,则覆盖已保存的购物车。

尝试以下数据库:

deviceReady()