Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
爱奥尼亚3、IOS、应用内购买_Ios_Ionic Framework_In App Purchase_Ionic3 - Fatal编程技术网

爱奥尼亚3、IOS、应用内购买

爱奥尼亚3、IOS、应用内购买,ios,ionic-framework,in-app-purchase,ionic3,Ios,Ionic Framework,In App Purchase,Ionic3,我已经在我的应用程序中实现了一个IAP作为订阅,也就是说,如果成功,我会尝试恢复购买。我说用户已订阅,否则我说他没有。如果他没有,我会让他订阅我的应用程序 在苹果几次拒绝之后,我们昨天接到了一个电话,他们声称我的恢复机制工作不好,我需要重新编写这部分代码 (附服务) 首先,我不明白他们怎么知道我是如何使用这个应用程序的,因为js是丑陋的 我正在使用Ionic 3和应用内购买1 Ionic插件 附加代码 从'@angular/core'导入{Injectable}; 从“lodash”中导入*a

我已经在我的应用程序中实现了一个IAP作为订阅,也就是说,如果成功,我会尝试恢复购买。我说用户已订阅,否则我说他没有。如果他没有,我会让他订阅我的应用程序

在苹果几次拒绝之后,我们昨天接到了一个电话,他们声称我的恢复机制工作不好,我需要重新编写这部分代码

(附服务)

首先,我不明白他们怎么知道我是如何使用这个应用程序的,因为js是丑陋的

我正在使用Ionic 3和应用内购买1 Ionic插件

附加代码

从'@angular/core'导入{Injectable};
从“lodash”中导入*as uu;
从“./db/db”导入{DbProvider};
从“ionic angular”导入{AlertController,Platform,ToastController};
从“./auth/auth”导入{AuthProvider};
从“./translation/translation”导入{TranslationProvider};
从“@ionic native/in-app purchase”导入{InAppPurchase}”;
从“./../app/app.constants”导入{TRIAL_PERIOD}”;
/*
为BillingProvider生成的类。
看见https://angular.io/guide/dependency-injection 有关提供商的更多信息
和角DI。
*/
@可注射()
导出类计费提供程序{
产品标识;
国际法庭;
现金支付;
用户;
获取iPaying(){
如果(本文件){
返回true;
}否则{
返回this.cashPay | | this.subscriber;
}
}
构造函数(私有db:DbProvider、私有alertCtrl:AlertController、私有auth:AuthProvider、私有translate:TranslationProvider、私有toastCtrl:ToastController、,
私有iapp:InApp采购,私有平台:平台){
this.init()
}
私有异步初始化(){
等待这个。平台。就绪();
const product_id=wait this.db.getProductId();
if(this.platform.is('ios')){
this.product_id=产品_id['ios'];
}否则{
this.product_id=product_id['android'];
}
等待此消息。loadSubscribe();
const{joined}=this.auth.currentUser;
const joinDate=新日期(parseInt(join));
const diff=new Date().getTime()-joinDate.getTime();
this.inTrial=diff<试验期;
const inTrial=this.inTrial;
this.auth.updateUser({inTrial});
const{paying}=this.auth.currentUserText;
this.cashPay=!!支付;
}
私有异步loadSubscribe(){
试一试{
const rawProducts=wait this.iapp.restorePurchases();
const products=JSON.stringify(rawProducts);
this.auth.updateUser({products});
const subscriber=!!u.find(rawProducts,{productId:this.product_id});
this.auth.updateUser({subscriber});
this.subscriber=subscriber;
}捕获(e){
控制台日志(e);
}
}
私人现金购买(res、rej){
const alert=this.alertCtrl.create({
标题:this.translate.translate('Pay by cash request'),
消息:this.translate.translate('请填写以下详细信息'),
投入:[
{
姓名:'姓名',
占位符:this.translate.translate('全名')
},
{
姓名:'邮件',
占位符:this.translate.translate('电子邮件')
},
{
姓名:'电话',
占位符:this.translate.translate('电话号码')
}
],
按钮:[
{
text:this.translate.translate('Cancel'),
handler:data=>rej()
},
{
text:this.translate.translate('Submit'),
处理程序:数据=>{
const user=this.auth.currentUserText;
const row=u.pickBy({…data,…user},e=>e);
此.db.addCashRequest(行);
const t=this.toastCtrl.create({
消息:this.translate.translate('我们收到您的请求,我们将很快与您联系'),
时长:3000,
位置:'底部'
});
t、 现在();
rej()
}
}
]
});
警惕。现在()
//asdasd
}
公众购买(){
返回新承诺((res,rej)=>{
const alert=this.alertCtrl.create({
标题:this.translate.translate(‘确认购买’),
消息:this.translate.translate('您想从哪个来源购买'),
按钮:[
{
text:this.translate.translate('From Store'),
处理程序:()=>{
this.iapp.subscribe(this.product\u id).then(res.catch)(rej);
}
},
{
text:this.translate.translate('By Cash'),
处理程序:()=>{
这是现金购买(res,rej);
}
}
]
});
alert.present();
})
}

}
您是否向用户提供通过应用内购买(现金)以外的方式购买订阅?如果是这样,你的应用程序将被拒绝,直到你删除该选项。我看不到显示的代码中关于恢复过程的任何细节。嘿,Paul,谢谢你的评论,因为我知道IOS允许我们从不同的来源索要现金。正如我在帖子中所说,我知道他们拒绝我的应用程序是因为我的恢复机制;例如,服务或内容必须使用IAP。如果您在应用程序之外交付实物(例如食品),则不能使用IAP。看见