Сбой приложения ios сразу после покупки в приложении

По сути, я в очень плохой ситуации. Наша команда успешно разрабатывает и выпускает новую версию приложения с новой функцией, которую пользователи могут покупать (покупки внутри приложения). Итак, мы протестировали все новые функциональные возможности с тестовым пользователем iTunes, и все отлично работало, однако, когда мы увидели релизную версию в appStore с реальным пользователем iTunes, возникла огромная проблема. Пользователь просто нажимает кнопку, чтобы купить покупку в приложении, после того, как он напишет пароль своей учетной записи и согласится купить эту новую информацию. К сожалению, приложение вылетает каждый раз после этого действия. И нет никаких действий после этого.

В основном, для покупок в приложении я использую MKStoreKit. Итак, я хотел бы представить код следующего действия:

- (IBAction)buyNewRequest:(id)sender
{

id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"uiAction"
                                                          action:@"Обработчик нажатия кнопки"
                                                           label:@"Кнопка - отправить запрос. Экран - запроса кредитной истории бки"
                                                           value:[NSNumber numberWithInt:100]] build]];

if ([self checkValidaionTextFields])
{
    [DejalBezelActivityView activityViewForView:self.view withLabel:@"Подождите..."].showNetworkActivityIndicator = YES;
    self.sendButton.enabled = NO;
    [[MKStoreManager sharedManager] buyFeature:@"ru.financemart.nbki"
                                    onComplete:^(NSString* purchasedFeature,
                                                 NSData* purchasedReceipt,
                                                 NSArray* availableDownloads)
     {

         id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
         [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"uiAction"
                                                               action:@"Уведомление подтверждения покупки БКИ"
                                                                label:@"Уведомление - покупка бки. Экран - отправки запроса кредитной истории БКИ"
                                                                value:[NSNumber numberWithInt:100]] build]];

         NSString *stringReceipt = [NSString stringWithFormat:@"%@", purchasedReceipt];
         stringReceipt = [stringReceipt stringByReplacingOccurrencesOfString:@" " withString:@""];
         stringReceipt = [stringReceipt stringByReplacingOccurrencesOfString:@"<" withString:@""];
         stringReceipt = [stringReceipt stringByReplacingOccurrencesOfString:@">" withString:@""];
         NSString *base64Receipt = [self base64forData:purchasedReceipt];
         NSString *hashDevelopKey = @"i5FnXIZ2aKjdn1Ru2VfLarbdCwbiJvfsnh9QTm9MB0I";
         NSString *hashMD5 = @"";
         hashMD5 = [hashMD5 stringByAppendingString:hashDevelopKey];


         NSString *familyText = self.familyTextField.text;
         NSString *nameText = self.nameTextField.text;
         NSString *patronimicText = self.patronimicTextField.text;
         NSString *passportID = self.passportID.text;
         NSString *email = self.emailTextField.text;
         NSString *dateOfBirth = dateOfBirthFormat;
         NSString *passportDate = datePassportFormat;

         NSString *regionForRequest = @"";
         if ([[UnicomAPIConfigResponse lastResponse] cityByID:@(self.unicomProposalsModel.cityID).stringValue].ru_RU != nil) {
             regionForRequest = [[UnicomAPIConfigResponse lastResponse] cityByID:@(self.unicomProposalsModel.cityID).stringValue].ru_RU;
         }

         hashMD5 = [hashMD5 stringByAppendingString:dateOfBirth];
         hashMD5 = [hashMD5 stringByAppendingString:email];
         hashMD5 = [hashMD5 stringByAppendingString:nameText];
         hashMD5 = [hashMD5 stringByAppendingString:patronimicText];
         hashMD5 = [hashMD5 stringByAppendingString:passportID];
         hashMD5 = [hashMD5 stringByAppendingString:passportDate];
         hashMD5 = [hashMD5 stringByAppendingString:base64Receipt];
         hashMD5 = [hashMD5 stringByAppendingString:regionForRequest];
         hashMD5 = [hashMD5 stringByAppendingString:familyText];
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         NSString *stringToken = [[[[defaults valueForKey:@"deviceToken"] description]
                                   stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
                                  stringByReplacingOccurrencesOfString:@" "
                                  withString:@""];
         hashMD5 = [hashMD5 stringByAppendingString:stringToken];
         NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
         [formatter setDateFormat:@"dd.MM.yyyy"];
         NSString *stringFromDate = [formatter stringFromDate:[NSDate date]];

         hashMD5 = [hashMD5 stringByAppendingString:stringFromDate];

         [DejalBezelActivityView activityViewForView:self.view withLabel:@"Отправляем..."].showNetworkActivityIndicator = YES;



         [self.unicomService postNBKIRequestWithName:nameText WithFamily:familyText andPatronimic:patronimicText andDOB:dateOfBirth andPassport:passportID andPassportDate:passportDate andPartnerName:@"1" andEmail:email andToken:stringToken andReceipt:base64Receipt andHashKey:[self md5:hashMD5] andRegion:regionForRequest success:^(UnicomAPIRequestsNBKIResponse *response)
          {
              self.sendButton.enabled = YES;
          } error:^(NSError *error) {
              self.sendButton.enabled = YES;
              [self performSelector:@selector(showError) withObject:nil afterDelay:2.0];
          }]->addObserver( ^( TLSignal<NSDictionary *> *sender, NSDictionary *response )
                          {
                              [self performSelector:@selector(showSuccessPostRequest) withObject:nil afterDelay:0.0];
                              userModel = [CreditUserModel tlSharedInstance];
                              NSDictionary *dicta = [userModel.serverResponse valueForKey:@"result"];
                              NSString *dictb = [dicta valueForKey:@"id"];
                              NSMutableDictionary *paramNBKI = [[NSMutableDictionary alloc] init];
                              [paramNBKI setObject:dictb forKey:@"requestID"];
                              [paramNBKI setObject:self.familyTextField.text forKey:@"familyName"];
                              [paramNBKI setObject:self.nameTextField.text forKey:@"name"];
                              [paramNBKI setObject:self.patronimicTextField.text forKey:@"patronimic"];
                              [paramNBKI setObject:passportID forKey:@"passportID"];
                              [paramNBKI setObject:dateOfBirth forKey:@"dateOfBirth"];
                              [paramNBKI setObject:passportDate forKey:@"passportDate"];
                              [paramNBKI setObject:base64Receipt forKey:@"baseReceipt"];
                              [paramNBKI setObject:[self convertDate:[NSDate date]] forKey:@"requestDate"];



                              NSUserDefaults *defaults= [NSUserDefaults standardUserDefaults];
                              if([[[defaults dictionaryRepresentation] allKeys] containsObject:@"nbkiHistory"])
                              {
                                  NSMutableArray *nbkiHistory = [[NSMutableArray alloc] init];
                                  nbkiHistory = [NSMutableArray arrayWithArray:[defaults valueForKey:@"nbkiHistory"]];
                                  [nbkiHistory addObject:paramNBKI];
                                  [defaults setObject:nbkiHistory forKey:@"nbkiHistory"];
                                  NSLog(@"mykey found");
                              } else {
                                  NSMutableArray *nbkiHistory = [[NSMutableArray alloc] init];
                                  [nbkiHistory addObject:paramNBKI];
                                  [defaults setObject:nbkiHistory forKey:@"nbkiHistory"];
                              }



                            self.sendButton.enabled = YES;
                          } );
     }
                                   onCancelled:^
     {
         self.sendButton.enabled = YES;
         [DejalBezelActivityView removeViewAnimated:YES];
     }];

}
}

Итак, после того, как пользователь принял покупку в приложении, вы можете увидеть POST-запрос к нашему серверу ([self.unicomService postNBKIRequestWithName:), но в журнале базы данных нашего сервера нет запросов, поэтому приложение аварийно завершает работу перед этим кодом. But, there are no code strings where are it is able to crash.

0 ответов

Другие вопросы по тегам