游戏购买的时候出现多次购买窗口弹出
解决方案:把购买支付 处理弄成单例
+(MyStoreObserver *) instance; //.h
@implementation MyStoreObserver //.m { } //单例模式 static MyStoreObserver *instance; +(MyStoreObserver *) instance { if(!instance) instance = [[MyStoreObserver alloc] init]; return instance; }
------2------
商品ID是字符串,而服务端传过来的是数值
解决方案1:利用枚举把字符串都跟这些数值一一对应
解决方案2:直接传递数值给参数,在加上个#define
#define productID_month_card @"xxx_m_card"
#define ProductID_60 @"xxx_new_60"
#define ProductID_300 @"xxx_300"
#define ProductID_980 @"xxx_new_980"
#define ProductID_1980 @"xxx_1980"
#define ProductID_3280 @"xxx_3280"
#define ProductID_6480 @"xxx_6480"
这样可以在switch里面直接用传递过来的数值进行判断
-(void)requestProductData
{
// MyStoreObserver * Mytest = [[MyStoreObserver alloc]init];
NSLog(@"------请求对应的产品信息-------");
NSArray * product = nil;
NSLog(@"--type--%d---- ",buyType );
switch (buyType) {
case 6:
product = [[NSArray alloc] initWithObjects:ProductID_60, nil];
break;
case 30:
if (_nfornum == 2) {
product = [[NSArray alloc] initWithObjects:ProductID_300, nil];
break;
}else if(_nfornum == 7){
product = [[NSArray alloc] initWithObjects:productID_month_card, nil];
break;
}
case 98:
product = [[NSArray alloc] initWithObjects:ProductID_980, nil];
break;
case 198:
product = [[NSArray alloc] initWithObjects:ProductID_1980, nil];
break;
case 328:
product = [[NSArray alloc] initWithObjects:ProductID_3280, nil];
break;
case 648:
product = [[NSArray alloc] initWithObjects:ProductID_6480, nil];
break;
// case 30:
// product = [[NSArray alloc] initWithObjects:productID_month_card, nil];
// break;
default:
break;
}
-----------3------------
当有同样价格的商品的时候,怎么区分传递过来的同样的值呢
解决方案:因为商品都有一个对应的id位置的值,可以在传值的时候也把这个值传递过来
让后在switch的case里添加一条判断语句就解决了。之前主程让我直接拿商品ID(跟位置ID不同)
来判断,但是商品ID,NSLog后是乱码,需要解密,虽然解密后也能判断,但是无疑添加了工作量,所有我就没
用这种方式了。能简单解决问题的方式就好。
switch (buyType) {
case 30:
if (_nfornum == 2) {
product = [[NSArray alloc] initWithObjects:ProductID_300, nil];
break;
}else if(_nfornum == 7){
product = [[NSArray alloc] initWithObjects:productID_month_card, nil];
break;
}
------------4------------