2017-02-03 42 views
3

我非常喜欢Ionic 2应用程序的开发,但目前我在购买过程中遇到了一些问题。如何检查应用程序启动时的订阅?

如何在应用程序启动时检查用户是否有有效购买? 我要实现以下行为:

用户具有订阅: - >显示页面中的

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

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

**编辑**

荫使用火力的后端,并可能存储购买那里。

这是我的函数:

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)); 
     }); 
} 

回答

1

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

完成上述操作后,您可以安全地调用您开发的服务,比如说用户配置文件服务,它告诉您用户拥有哪些订阅。

你可以存储在本地使用Ionic's Secure Storage插件性能的目的

导航到另一个页面,您可以使用NavController.push浏览到的网页信息。

+1

是。在这里需要用户信息并登录,以获取用户的订阅。是否仅在本地存储此信息**是一个糟糕的主意。将其存储在与用户链接的数据库中,因此,当用户从任何其他平台/设备登录时,订阅信息将来自数据库。 'nav.push(PageA)'应该足够简单。 –

+0

听起来不错,iam已经在我的离子2应用程序中使用firebase作为后端。 但是,如果用户仍然有活动的订阅,我该如何检查间隔或什么? – Fargho

0

我不知道如果我得到你的问题的权利,但你可以做以下检查,如果用户登录(通过电子邮件beeing,Facebook,谷歌等),并能够购买:

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 
    } 
}); 

如果你想知道,如果用户有购买的时候,他离开了他的应用程序还没有完成,你可以做到以下几点:

  • 保存在你的用户ID的localStorage/SQLite的。
  • 如果用户没有帐户(如果您希望他们购买时没有beeing记录)使用购物车信息的firebase方法.push(),它会生成一个随机密钥,您可以使用.then()
  • 在你的根页面(A和B)有一个ionViewWillLeave()方法,将当前的购物车保存在他的firebase节点中(使用保存的uid)。
  • 在应用中打开你从火力店购物车,如果它存在,并且itens(喜欢上了ionViewDidLoad()或类似这样的东西你rootPage这样做,对app.componentdeviceReady()它可以在你的应用程序慢一点)
  • 应用程序退出时,如果商店购物车是空的,则从数据库中删除商店购物车节点,如果不是,则覆盖保存的购物车。

尝试数据库,如:

/Users 
|_ User_uid 
    |_ User_Info_Node 
    | |_ USER_NAME //AND CITY, PHONE, ETC. 
    |_ CART 
     |_ CART_ITEM1_ID 
     |_ CART_ITEM2_ID 
     |_ CART_ITEM3_ID 
相关问题