iOS: 用户购买了积分,购买后如何追踪积分?
iOS: User purchases points, how should I track points after purchase?
对此问题的任何反馈都将非常有帮助。我构建了一个应用程序,允许我的用户购买 "points"。一旦用户通过选择 tableview 单元格选择了他们想要购买的点数,他们就会被带到 viewcontroller 完成购买(收集 cc 详细信息等)。我正在使用 Shopify 的 Mobile Buy SDK 来协调这个。
一旦用户结账成功(假设我的用户购买了 30 积分),我如何才能在购买后在标签中显示该数字?
简而言之: 我想让我的代码显示用户在购买后当前拥有的积分数。
额外背景: 我的用户通过 Drupal 登录到我的应用程序(我使用的是 Drupal iOS SDK)。我几乎想知道我是否有办法以某种方式使用 Shopify 模块来跟踪它?
请参阅下面我的一些代码以供参考。
Tableviewcontroller.m(用户选择要购买的积分数,积分添加到购物车,用户被推送到结帐viewcontroller)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *PointsTableIdentifier = @"PointsCell";
PointsCell *cell = (PointsCell *)[tableView dequeueReusableCellWithIdentifier:PointsTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PointsCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
BUYProduct *productsbuy = self.products[indexPath.row];
cell.productLabel.text = productsbuy.title;
BUYProduct *productDescription = self.products[indexPath.row];
cell.productDescrip.text = productDescription.htmlDescription;
BUYProduct *pointValues = self.products[indexPath.row];
BUYProductVariant *variant = pointValues.variants.firstObject;
cell.priceLabel.text = [NSString stringWithFormat:@"%@", variant.price];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// BUYCart *cart = [[BUYCart alloc] init];
BUYProduct *product = self.products[indexPath.row];
BUYProductVariant *variant = [product.variants firstObject];
if (!self.cart) {
self.cart = [BUYCart singleton];
}
[self.cart addVariant:variant];
NSLog(@"%@",variant);
PayViewController *checkOutVC = [[PayViewController alloc]initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:checkOutVC animated:YES];
}
CheckoutViewController.m(用户输入详细信息,点击按钮进行购买,结帐完成)
- (IBAction)purchasePoints:(id)sender {
BUYCreditCard *creditCard = [[BUYCreditCard alloc] init];
creditCard.number = self.cardNumber.text;
creditCard.expiryMonth = self.expMonth.text;
creditCard.expiryYear = self.expYear.text;
creditCard.cvv = self.csvNumber.text;
creditCard.nameOnCard = self.fullcardName.text;
BUYClient *client = [BUYClient singleton];
[client storeCreditCard:creditCard checkout:self.checkout completion:^(BUYCheckout *returnedCheckout, NSString *paymentSessionId, NSError *error) {
if (error == nil) {
self.checkout = returnedCheckout;
[self tryCompleteCheckout];
} else {
}
}];
}
这很简单。你需要做的是
- 检查用户选择了哪些点
- 将该信息存储在 NSUserDefaults 中
- 如果购买成功将该值转换为 int 并添加到另一个 NSUserDefaults
- 使用该信息在任何你喜欢的地方显示,UILabel 等
示例代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// ... your code
//i assume this variant has user points?
BUYProductVariant *variant = [product.variants firstObject];
NSString *pointsStr = [NSString stringWithFormat:@"%@", variant];
[[NSUserDefaults standardUserDefaults] setObject:pointsStr forKey:@"UserWantsToBuyPoints"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
在您成功完成购买后执行此操作
- (IBAction)purchasePoints:(id)sender {
//... your code
[client storeCreditCard:creditCard checkout:self.checkout completion:^(BUYCheckout *returnedCheckout, NSString *paymentSessionId, NSError *error) {
if (error == nil) {
//purchase was successful
NSString *pointsStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserWantsToBuyPoints"];
//incase he already had points from some previous purchase
NSString *totalUsePoints = [[NSUserDefaults standardUserDefaults] objectForKey:@"totalUsePoints"];
int pointsInt = [pointsStr intVal];
int totalUsePointsInt = [totalUsePoints intVal];
totalUsePointsInt = totalUsePointsInt + pointsInt;
NSString *totalStr = [NSString stringWithFormat:@"%d", totalUsePointsInt];
[[NSUserDefaults standardUserDefaults] setObject:totalStr forKey:@"totalUsePoints"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
对此问题的任何反馈都将非常有帮助。我构建了一个应用程序,允许我的用户购买 "points"。一旦用户通过选择 tableview 单元格选择了他们想要购买的点数,他们就会被带到 viewcontroller 完成购买(收集 cc 详细信息等)。我正在使用 Shopify 的 Mobile Buy SDK 来协调这个。
一旦用户结账成功(假设我的用户购买了 30 积分),我如何才能在购买后在标签中显示该数字?
简而言之: 我想让我的代码显示用户在购买后当前拥有的积分数。
额外背景: 我的用户通过 Drupal 登录到我的应用程序(我使用的是 Drupal iOS SDK)。我几乎想知道我是否有办法以某种方式使用 Shopify 模块来跟踪它?
请参阅下面我的一些代码以供参考。
Tableviewcontroller.m(用户选择要购买的积分数,积分添加到购物车,用户被推送到结帐viewcontroller)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *PointsTableIdentifier = @"PointsCell";
PointsCell *cell = (PointsCell *)[tableView dequeueReusableCellWithIdentifier:PointsTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PointsCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
BUYProduct *productsbuy = self.products[indexPath.row];
cell.productLabel.text = productsbuy.title;
BUYProduct *productDescription = self.products[indexPath.row];
cell.productDescrip.text = productDescription.htmlDescription;
BUYProduct *pointValues = self.products[indexPath.row];
BUYProductVariant *variant = pointValues.variants.firstObject;
cell.priceLabel.text = [NSString stringWithFormat:@"%@", variant.price];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// BUYCart *cart = [[BUYCart alloc] init];
BUYProduct *product = self.products[indexPath.row];
BUYProductVariant *variant = [product.variants firstObject];
if (!self.cart) {
self.cart = [BUYCart singleton];
}
[self.cart addVariant:variant];
NSLog(@"%@",variant);
PayViewController *checkOutVC = [[PayViewController alloc]initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:checkOutVC animated:YES];
}
CheckoutViewController.m(用户输入详细信息,点击按钮进行购买,结帐完成)
- (IBAction)purchasePoints:(id)sender {
BUYCreditCard *creditCard = [[BUYCreditCard alloc] init];
creditCard.number = self.cardNumber.text;
creditCard.expiryMonth = self.expMonth.text;
creditCard.expiryYear = self.expYear.text;
creditCard.cvv = self.csvNumber.text;
creditCard.nameOnCard = self.fullcardName.text;
BUYClient *client = [BUYClient singleton];
[client storeCreditCard:creditCard checkout:self.checkout completion:^(BUYCheckout *returnedCheckout, NSString *paymentSessionId, NSError *error) {
if (error == nil) {
self.checkout = returnedCheckout;
[self tryCompleteCheckout];
} else {
}
}];
}
这很简单。你需要做的是
- 检查用户选择了哪些点
- 将该信息存储在 NSUserDefaults 中
- 如果购买成功将该值转换为 int 并添加到另一个 NSUserDefaults
- 使用该信息在任何你喜欢的地方显示,UILabel 等
示例代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// ... your code
//i assume this variant has user points?
BUYProductVariant *variant = [product.variants firstObject];
NSString *pointsStr = [NSString stringWithFormat:@"%@", variant];
[[NSUserDefaults standardUserDefaults] setObject:pointsStr forKey:@"UserWantsToBuyPoints"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
在您成功完成购买后执行此操作
- (IBAction)purchasePoints:(id)sender {
//... your code
[client storeCreditCard:creditCard checkout:self.checkout completion:^(BUYCheckout *returnedCheckout, NSString *paymentSessionId, NSError *error) {
if (error == nil) {
//purchase was successful
NSString *pointsStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserWantsToBuyPoints"];
//incase he already had points from some previous purchase
NSString *totalUsePoints = [[NSUserDefaults standardUserDefaults] objectForKey:@"totalUsePoints"];
int pointsInt = [pointsStr intVal];
int totalUsePointsInt = [totalUsePoints intVal];
totalUsePointsInt = totalUsePointsInt + pointsInt;
NSString *totalStr = [NSString stringWithFormat:@"%d", totalUsePointsInt];
[[NSUserDefaults standardUserDefaults] setObject:totalStr forKey:@"totalUsePoints"];
[[NSUserDefaults standardUserDefaults] synchronize];
}