При покупке приложения в реальном времени отобразить всплывающее окно с песочницей и разрешить подписку для пользователя песочницы. - PullRequest
0 голосов
/ 29 июня 2018

Я добавил покупку в приложении в свое приложение, оно хорошо работает в среде песочницы, но когда я изменяю его URL-адрес с песочницы на приложение и запускаю приложение, оно ведет себя неожиданно.

Вот мой код:

Ниже приведен метод, с помощью которого мы запрашиваем у Apple информацию о покупках в приложении пользователя.

-(BOOL) getSubscriptionStatusFromAppleWithReceipt:(NSData *) receiptData

{

NSError *error;
NSMutableDictionary *requestContents = [NSMutableDictionary dictionaryWithObject:
                                        [receiptData base64EncodedStringWithOptions:0] forKey:@"receipt-data"];
NSString *sharedSecret = @“*********************”;
if (sharedSecret) requestContents[@"password"] = sharedSecret;
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestContents options:0 error:&error];

NSString *strUrl = @"";


// Live server
strUrl = @"https://buy.itunes.apple.com/verifyReceipt";

// Devlopment server

// strUrl = @ "https://sandbox.itunes.apple.com/verifyReceipt";

NSMutableURLRequest *storeRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strUrl]];
[storeRequest setHTTPMethod:@"POST"];
[storeRequest setHTTPBody:requestData];

queue = [NSOperationQueue mainQueue];

//    NSError *error = nil; 
NSHTTPURLResponse *response = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:storeRequest returningResponse:&response error:&error];

if (!error)
{
    NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

    if ([jsonResponse[@"latest_receipt_info"] isKindOfClass:[NSArray class]])
    {
        NSArray *receiptInfo = (NSArray *) jsonResponse[@"latest_receipt_info"];
        return [self parseJsonFromAppleServer:receiptInfo];
    }
}
else
{        NSLog(@"%@", error.localizedDescription);
}

return false;   

}

И следующий метод в этом, я получаю последний индекс массива квитанций и пытаюсь получить детали подписки пользователя.

Должен ли я загрузить его во время тестового полета или каким-либо иным способом отличить его от живого в разработке? Как проверить это в живом окружении.

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Для запуска IAP с Live-сервером приложение должно быть запрограммировано с профилем производственного обеспечения. Я думаю, что вы можете тестировать только с производственными серверами, используя тестовый полет, так как приложение должно быть подписано серверами Apple.

...