По сути, я пытался настроить покупки приложений в тестовом приложении, прежде чем внедрить их в надлежащее приложение, над которым работает моя компания. Я прочитал pdf-файл Store и другие фрагменты примерно 1000 раз, но продукты по-прежнему возвращаются пустыми. Вот что я сделал до сих пор:
Настройка тестового приложения и тестовых позиций в приложении Покупка
Я создал новый идентификатор приложения для «Test App One» на портале разработчиков моей компании в Центре разработки iPhone. Я удостоверился, что префикс был com.mycompany.testappone
, чтобы обеспечить возможность настройки покупок в приложении. Оставаясь в разделе идентификаторов приложений, я настроил покупки приложений, отметив опцию «Включить покупку приложений».
Я создал «Test App One» в iTunes Connect и выполнил обычную процедуру, но выбрал «загрузить двоичный файл позже» и не отправил на проверку, так как приложение ничего не делает. Конечно, нам не нужно отправлять приложение на проверку, чтобы это работало ?! Затем я нажал на кнопку «Управление покупками приложений» и создал новый с идентификатором продукта «test1» и утвердил его для продажи.
код
Я создал новый проект в XCode под названием TestAppOne
, и сейчас я использую только 2 класса:
TestAppOneAppDelegate.h:
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
@interface TestAppOneAppDelegate : NSObject <UIApplicationDelegate, SKRequestDelegate, SKProductsRequestDelegate> {
UIWindow *window;
}
TestAppOneDelegate.m:
#import "TestAppOneAppDelegate.h"
static NSString *kMyFeatureIdentifier1 = @"com.mycompany.testappone.test1";
@implementation TestAppOneAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
if([SKPaymentQueue canMakePayments]) {
NSLog(@"IN-APP:can make payments");
}
else {
NSLog(@"IN-APP:can't make payments");
}
[self requestProductData];
[window makeKeyAndVisible];
}
- (void)requestProductData {
NSLog(@"IN-APP:requestProductData");
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMyFeatureIdentifier1]];
request.delegate = self;
[request start];
NSLog(@"IN-APP:requestProductData END");
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"IN-APP:productsRequest");
NSArray *myProduct = response.products;
NSLog(@"IN-APP:array count: %i", [myProduct count]);
[request autorelease];
NSLog(@"IN-APP:productsRequest END");
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
Тестирование на устройстве
Я создал тестовую учетную запись «песочницы» и вышел из своей учетной записи iTunes на iPhone, но не входил в нее с тестовой учетной записью, поскольку документация говорит нам не делать этого до тех пор, пока нас не попросят на этапе покупки. Затем я создаю приложение, и вот журнал, который я получаю:
IN-APP:can make payments
IN-APP:requestProductData
IN-APP:requestProductData END
IN-APP:productsRequest
IN-APP:array count: 0
IN-APP:productsRequest END
Может кто-нибудь сказать мне, если я пропустил какие-либо этапы или есть что-то, что я делаю неправильно. К сожалению, нет примеров приложений от Apple.