2015-11-22 7 views
0

Любая обратная связь по этому вопросу была бы чрезвычайно полезна. Я создал приложение, которое позволяет моим пользователям приобретать «баллы». Когда пользователь выбирает количество точек, которые они хотели бы приобрести, выбирая ячейку tableview, они переходят в контроллер просмотра, который завершает покупку (собирает детали cc и т. Д.). Я использую SDK Mobile Buy для покупки, чтобы организовать это.iOS: Пользователь покупает очки, как мне отслеживать точки после покупки?

Как только пользовательская проверка прошла успешно (допустим, мой пользователь купил 30 баллов), как я могу показать это число на этикетке ПОСЛЕ покупки?

Вкратце:Я ищу, чтобы мой код отображал количество очков, которые пользователь имеет в настоящее время после покупки.

Дополнительный фон: Мои пользователи подключаются к моему приложению через Drupal (я использую SDK Drupal iOS). Мне почти интересно, есть ли способ использовать модуль 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 { 

     } 
    }]; 


} 
+0

ли точки, связанные с учетной записью на сервере? Youmshoukdmstore баланс в этой учетной записи на вашем сервере. Если они находятся только на локальном устройстве, вы можете использовать keychain. Используются ли точки, используемые для доступа к функциям или контенту в вашем приложении? Если это так, вы получите отказ от использования системы покупки приложений Apple. – Paulw11

+0

@ Paulw11 Hey Paul - спасибо за отзыв re: система покупки приложений Apple. Пользователи будут использовать точки для торговли услугами с одним и другим, однако контент или функции не блокируются в результате отсутствия точек покупки (пользователи могут использовать приложение совершенно бесплатно, если они захотят). Мысли? – Brittany

+0

@ Gordonium Предложение: просто обновите свой ответ. – zaph

ответ

0

Это довольно просто. что вам нужно сделать, это

  • проверить, что указывает пользователь выбрал
  • магазин, информация в NSUserDefaults
  • если покупка была успешной преобразовать это значение к междунар и добавить к другим 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]; 


} 
+0

Я абсолютно обожаю вас за то, что вы собрали это вместе - большое вам спасибо. Я начну реализовывать это сейчас и дам вам знать, как это происходит!Быстрый вопрос: если я сохраняю NSUserDefaults, и пользователь регистрируется с их именем пользователя и паролем на другом устройстве, точки теряются? Нет? – Brittany

+0

, к сожалению, да, точки локальны для устройства в обычных NSUserDefaults. Но, сказав, что google iCloud Key-Value Data tutorials. Они сохраняют значения так же, как и NSUserdefaults, и, конечно же, лучшая часть состоит в том, что значение этой переменной является общим для всех устройств. Я хотел бы хранить totalUsePoints в iCloud. Счастливое кодирование –

+0

Эй, Сэм - удивительно, спасибо. Поэтому просто уточнить: если я поеду по этому маршруту, пользователи смогут получать свои сохраненные данные с любого устройства, которое у них есть, подключенного к учетной записи iCloud? – Brittany

Смежные вопросы