如何在应用启动时检查订阅?
Posted
技术标签:
【中文标题】如何在应用启动时检查订阅?【英文标题】:How to check subscription on app start? 【发布时间】:2017-06-21 10:34:56 【问题描述】:我真的很享受 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));
);
【问题讨论】:
【参考方案1】:您需要一个身份验证和授权解决方案。 用户必须以某种方式被识别(认证)。您不需要实现您的,而是可以使用 Facebook、GooglePlus 或 Tweeter 的。您可以使用允许您的用户登录到这三个中的任何一个的 Azure 移动应用服务。
完成上述操作后,您就可以安全地调用您开发的服务,比如用户配置文件服务,它会告诉您用户拥有哪些订阅。
出于性能目的,您可以使用Ionic's Secure Storage 插件在本地存储此信息
要导航到另一个页面,您可以使用NavController.push 导航到页面。
【讨论】:
是的。此处需要用户信息等登录,以获取用户的订阅。是否在本地仅存储此信息是个坏主意。将其存储在链接到用户的数据库中,因此,当用户从任何其他平台/设备登录时,订阅信息将来自数据库。nav.push(PageA)
应该足够简单。
听起来不错,我已经在我的 ionic 2 应用程序中使用 firebase 作为后端。但是,如果用户仍有活动订阅,我如何检查时间间隔或其他内容?【参考方案2】:
我不知道我的问题是否正确,但您可以执行以下操作来检查用户是否已登录(通过电子邮件、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 上。 如果用户没有帐户(如果您希望他们在不登录的情况下购买)使用带有购物车信息的 firebase 方法.push()
,它将生成一个随机密钥,您可以在承诺返回中获取该密钥使用.then()
。
在您的根页面(A 和 B)中有一个 ionViewWillLeave()
方法,可将当前购物车保存在他的 firebase 节点中(使用保存的 uid)。
在应用程序打开时,您会从 firebase 获取购物车(如果存在)和 itens(最好在您的 rootPage 上使用 ionViewDidLoad()
或类似的东西在 app.component
的 deviceReady()
上执行此操作,它可能会变慢稍微降低你的应用程序)
应用退出时,如果购物车为空,则从数据库中删除购物车节点,如果不是,则覆盖保存的购物车。
试试这样的数据库:
/Users
|_ User_uid
|_ User_Info_Node
| |_ USER_NAME //AND CITY, PHONE, ETC.
|_ CART
|_ CART_ITEM1_ID
|_ CART_ITEM2_ID
|_ CART_ITEM3_ID
【讨论】:
以上是关于如何在应用启动时检查订阅?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Paypal API / SDK,我将如何检查某个订阅 ID? C#
React Native iOS:检查通知权限内存泄漏,如何在应用启动时检查通知权限?