android - Revenuecat 在 Android Studio 中检查订阅者状态和购买时出现错误
问题描述
我只有订阅用户的页面。我尝试使用 Revenuecat 来了解用户是否订阅并进行购买。但我想我犯了错误。
我想在下面进行购买,但出现错误。
'''
公共类 VipPreferences 扩展 AppCompatActivity {
ImageView back, threemonthsvip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_vip_preferences);
getSupportActionBar().hide();
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
Purchases.setDebugLogsEnabled(true);
Purchases.configure(this, "api_key");
back=(ImageView)findViewById(R.id.back);
threemonthsvip=(ImageView)findViewById(R.id.threemonthsVip);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
VipPreferences.super.onBackPressed();
}
});
threemonthsvip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Purchases.getSharedInstance().purchasePackage(this,package,new MakePurchaseListener() {
@Override
public void onCompleted(@NonNull Purchase purchase, @NonNull PurchaserInfo purchaserInfo) {
if (purchaserInfo.getEntitlements().get("Vip").isActive()) {
// Unlock that great "pro" content
Toast.makeText(VipPreferences.this, "Congratulations! Your payment is successful.", Toast.LENGTH_SHORT).show();
Intent intent=new Intent(VipPreferences.this,Vip.class);
startActivity(intent);
}
}
@Override
public void onError(@NonNull PurchasesError error, boolean userCancelled) {
Toast.makeText(VipPreferences.this, "Something were wrong", Toast.LENGTH_SHORT).show();
}
});
}
});
}
} '''
下面我检查 setOnClickListener 中的订阅状态,并尝试如果未订阅,则尝试打开购买选项,如果订阅,则打开活动。但是当我在应用程序运行时单击时,应用程序会直接关闭。
''' 公共类 MainActivity 扩展 AppCompatActivity {
ImageView showFree,showVip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
Purchases.setDebugLogsEnabled(true);
Purchases.configure(this, "api_key");
showFree=(ImageView)findViewById(R.id.showFree);
showVip=(ImageView)findViewById(R.id.showVip);
showFreeTips.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Free.class);
startActivity(intent);
}
});
showVip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Purchases.getSharedInstance().getPurchaserInfo(new ReceivePurchaserInfoListener() {
@Override
public void onReceived(@NonNull PurchaserInfo purchaserInfo) {
if (purchaserInfo.getEntitlements().get("Vip").isActive()) {
// Grant user "pro" access
Intent intent=new Intent(MainActivity.this,Vip.class);
startActivity(intent);
}else {
Intent intent=new Intent(MainActivity.this,VipPreferences.class);
startActivity(intent);
}
}
@Override
public void onError(@NonNull PurchasesError error) {
}
});
}
});
}
'''
解决方案
您面临的第一个问题是由于您package
在调用purchasePackage
. package
是 Java 保留关键字,不能用于命名变量。您可以在此处查看 Java 保留字列表https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
对于第二个问题,您似乎遇到了运行时异常。查看 Android Studio https://developer.android.com/studio/debug/am-logcat中的 Android Logcat以找出导致应用关闭的原因会对您有所帮助。
推荐阅读
- ios - 如何在按钮单击时从 URL 播放音频并在滑块或进度条上快速显示进度..?
- delphi - 将 Axis Camera Stream 直接保存为 mp4 文件
- ios - BulletinBoard 为 ImageView 分配手势
- python - 将参数传递给 json.dumps()
- javascript - 太多的重新渲染。当我尝试更改状态时,React 限制了渲染的数量以防止无限循环
- jupyter-notebook - 所有绘图都显示在笔记本中,但 nbconvert notebook to html,仅显示最新的 plotly express 绘图
- azure - 将数据从 AWS RDS 拉到 DataFactory (Azure mysql) 时出现数据问题的数据工厂 V2 错误代码 2200
- javascript - 对于一组对象,我想找到一个相同属性的不同值的频率,但想为每个项目写入特定计数
- tensorflow - Tensorflow Serving:如何使用 tensorflow 服务重新训练当前在生产中服务的模型?
- vue.js - IONIC + Vue.js 在 VueX 中不起作用