В принципе, я пытался настроить покупки приложений в тестовом приложении, прежде чем я внедрю их в подходящее приложение, над которым работает моя компания. Я прочитал набор PDF для магазина и другие фрагменты примерно в 1000 раз, но продукты все еще возвращаются как пустые. Вот именно то, что я сделал до сих пор:
Установить тестовое приложение и пункты тестирования App Purchase
Я создал новый идентификатор приложения для "Test App One" на моем портале разработчиков в iPhone Dev Center. Я удостоверился, что префикс был com.mycompany.testappone
, чтобы гарантировать, что в покупках приложений можно настроить. Оставаясь в разделе "Идентификаторы приложений", я настроил покупки приложений, отметив опцию "Включить покупку".
Я создал "Test App One" в iTunes Connect и выполнил обычную процедуру, но выбрал "upload binary later" и не отправил на рассмотрение, поскольку приложение ничего не делает. Неужели нам не нужно прикладывать приложение для обзора, чтобы это работало?! Затем я нажал на управление покупками приложений и создал новый с идентификатором продукта '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 не работает с примерами приложений.