Fondamentalmente, ho provato a configurare gli acquisti di app su un'app di test prima di implementarli in un'app corretta su cui la mia azienda sta lavorando. Ho letto il pdf del kit di vendita e altri snippet circa 1000 volte, ma i prodotti sono ancora restituiti come vuoti. Qui è esattamente quello che ho fatto finora:iPhone In App Purchase - response.products sono ancora vuoti?
Configurazione di test app e in articoli di acquisto Test App
ho creato un nuovo ID app per 'Test App One' sul portale per gli sviluppatori della mia azienda in iPhone Dev Center. Mi sono assicurato che il prefisso fosse com.mycompany.testappone
per garantire la possibilità di configurare gli acquisti in app. Rimanendo nella sezione ID app, mi sono configurato nell'acquisto di app spuntando l'opzione "Abilita l'acquisto in app".
Ho creato "Test App One" in iTunes Connect e completato la procedura usuale, ma selezionato "upload binary later" e non ho inviato per la revisione in quanto l'app non fa nulla. Sicuramente non dobbiamo inviare l'app per la revisione perché funzioni ?! Ho quindi fatto clic su Gestisci negli acquisti di app e ne ho creato uno nuovo con ID prodotto "test1" e l'ho approvato in modo tale da essere eliminato per la vendita.
Codice
ho creato un nuovo progetto in XCode chiamato TestAppOne
e qui sono le uniche 2 classi sto usando per ora:
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
T esting sul dispositivo
Ho creato un account di prova sandbox e ho effettuato il logout dal mio account iTunes su iPhone, ma non ho eseguito l'accesso con l'account di prova poiché la documentazione ci dice di non farlo finché non viene richiesto all'acquisto palcoscenico. Ho poi costruire l'applicazione e qui è il registro sto ottenendo:
IN-APP:can make payments
IN-APP:requestProductData
IN-APP:requestProductData END
IN-APP:productsRequest
IN-APP:array count: 0
IN-APP:productsRequest END
Qualcuno può dirmi se ho lasciato alcuna fase fuori o se c'è qualcosa che sto facendo male. Purtroppo non sembrano esserci app di esempio fatte da Apple.
Basta inviarlo e respingerlo immediatamente. Non voglio fissare la data in futuro e non pensarci più! –
Ah, ok. Buono a sapersi. Non l'ho ancora provato. –
Grazie. Sfortunatamente, Apple ha dimenticato di includere questa importantissima informazione dalla loro documentazione, ma l'ho scoperto dopo aver letto questo utile tutorial: http: //troybrant.net/blog/2010/01/in-app-purchases-a-full -walkthrough/ – user218485