gpt4 book ai didi

android - 创建 Google Play 产品和应用内结算

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:33 24 4
gpt4 key购买 nike

我正在开发一个带有 RecyclerView 的应用程序有很多项目(其中一些是固定的并且是每个人的默认),但我想让其中一些“不免费”,这意味着你有至 pay (如果可能,使用 Google Play)解锁这些元素,您能指导我如何解决这种情况吗?我怎么知道用户有已付款的项目,以及我何时知道他已付款。

我不想使用 Database因为我猜我只需要两个表,例如;

TABLE USER

我将在哪里存储 id (如果我最终创建了一个 Login GMAIL,FACEBOOK,我想这将是电子邮件)

TABLE BOX

我将把免费和非免费的 BOX 放在哪里,作为 Foreign Key我会把 user.id获得引用资料 BOX's他/她拥有。

对吧?

但是,如果我必须选择这种方式,因为如果用户支付了一个 box在我的应用程序上,然后他想在其他设备上使用它,它不会有 box除非他登录新设备,对吗?所以,如果我不得不选择 DatabaseHosting这样做,你的建议是什么? (从一开始,我不会有太多数据,所以我不需要最好的,我只想与我的 Android 应用程序通信)。

我希望现在已经很清楚了,否则请发表评论,我会尽力解释得更好。

编辑

阅读答案后我发现我可以使用 Firebase ,正如@Haris Qureshi 所说,我很困惑的是:

如何储存产品?我的意思是,我已经阅读并观看了关于 YouTube 的视频。我必须在 Console of Google Play 中完成但是我需要发送 .apk 吗?然后添加产品?

如果我不需要创建 Database ,我最终不得不使用 Firebase , 使用 Storage来自 Firebase 的东西会储存我的产品吗?但我可以将其分配为 PURCHASED , PAID , AVAILABLE ?我还需要整合 Authentication , 正确的?因为他说一旦你买了一个产品,它就会存储已经支付过的 gmail,你知道谁支付了谁没有支付,所以如果他使用另一个设备,它会购买相同的产品(如果他仍然使用相同的 gmail) .

产品可以动态吗?我的意思是,您可以创建一个“事件”,并将该产品仅放置 x 天,因为我需要 Image展示产品,我的意思是产品也会有一个Image在 UI 上显示,但我在 Console of Google Play 中看到我只能创建一个 id对于产品,如果我必须动态创建它,我可以这样做,因为我必须存储 Images/res/mipmap对吧?

编辑2

我需要的是@Alex Mamo 告诉我的:

You cannot store images in your Firebase database. You need to store them in Firebase Storage. In Firebase database you need to store only the urls of those images.

流程是这样的:上传图片到Firebase Storage -> 获取对应图片的url(上传时) -> 将url存入Firebase Database -> 使用引用显示图片

我已经在 google console developer 上创建了产品,我必须将我的应用连接到应用内结算

最佳答案

这里有很好的答案,但因为你问过我,我会尽量给你一些更多的细节。 实现应用内结算的最佳实践是 official documentation .请在下面查看我对您的一些问题的回答。

正如许多其他用户所建议的那样,我也建议您使用 Firebase 作为您应用程序的数据库。它是一个 NoSQL 数据库,非常易于使用。

How do you store the product?

请参阅下面我推荐您用于您的应用程序的数据库结构。

Firebase-root
|
--- users
| |
| --- uid1
| |
| --- //user details (name, age, address, email and so on)
| |
| --- products
| |
| --- productId1 : true
| |
| --- productId2 : true
|
--- products
| |
| --- productId1
| | |
| | --- productName: "Apples"
| | |
| | --- price: 11
| |
| |
| --- users
| |
| --- uid1: true
| |
| --- uid2: true
|
--- purchasedProducts
| |
| --- uid1
| |
| --- productId1: true
| |
| --- productId2: true
|
--- paidProducts
| |
| --- uid2
| |
| --- productId3: true
|
--- availableProducts
| |
| --- uid3
| |
| --- productId4: true

使用此数据库结构,您可以查询数据库:

  1. 属于单个用户的所有产品(已购买、已支付或可用)
  2. 所有购买过特定产品的用户
  3. 属于单个用户的所有已购买产品
  4. 属于单个用户的所有付费产品
  5. 属于单个用户的所有可用产品

每次购买商品,只需将商品移至对应的分类即可。作为铝。 said,您可以将您的应用程序设置为使用 Firebase SDK 获取产品。那不是问题。

这在 Firebase 中称为非规范化,在 Firebase 数据库中非常正常。为此,我建议查看此 video .如果您想要更复杂的东西,我建议您阅读这篇文章,Structuring your Firebase Data correctly for a Complex App .

Using the Storage stuff from Firebase will store my products?

是的,您可以使用 Firebase Cloud Storage它专为需要存储和提供用户生成的内容(例如照片或视频)的应用开发者而构建。

Also I'll need to integrate the Authentication, right?

是的,你需要使用 Firebase Authentication因为您需要知道用户的身份。了解用户身份后,应用程序可以将用户数据安全地保存在云中,并在用户的所有设备上提供相同的个性化体验。Firebase 身份验证提供后端服务、易于使用的 SDK 和现成的 UI 库来对您的应用程序的用户进行身份验证。它支持使用密码、电话号码、流行的联合身份提供商(如 Google、Facebook 和 Twitter 等)进行身份验证。

The products can be dynamics? I mean, you can create for example an "event" and put that product only for x days?

是的,您可以使用 Cloud Functions For Firebase 来做到这一点它允许您自动运行后端代码以响应由 Firebase 功能和 HTTPS 请求触发的事件。您的代码存储在 Google 的云中,并在托管环境中运行。无需管理和扩展您自己的服务器。

这是您可以查询数据库以显示所有产品的产品名称和价格的方式。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child("products");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String productName = ds.child("productName").getValue(String.class);
double price = ds.child("price").getValue(Double.class);
Log.d("TAG", productName + price);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);

这就是您如何查询数据库以查看属于特定用户的所有 purchasedProducts:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("purchasedProducts").child("uid1");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String productKey = ds.getKey();
Log.d("TAG", productKey);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);

关于android - 创建 Google Play 产品和应用内结算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47252073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com