2012-04-11 8 views
1

Ich teste die In-App-Kauf neue Funktion auf Mac OS Lion, ich bin bei der Quittung Validierung Teil fest, Mein Code immer an diesem Teil, als ob ich bin nicht verbunden mit Sandbox oder der Anwendung Quittung senden Sie mir nie die Quittung als "exit (173);" soll funktionieren. Mac OS LION 10.7 In-App-Kauf

Das sind meine Schritte:

1-Register eine explizite App-ID für die Anwendung. ([Mitgliedszentrum] [1]).

2-Fügen Sie eine Anwendung auf itunes mit der App ID mit dem Status "prepare for upload" hinzu.

3-Add in App-Kauf Produkte Produkt.

5-Erstellen eines Testbenutzers 6 - Erstellen, Herunterladen und Installieren eines Mac Signing-Zertifikats, das die App ID verwendet, die für das In-App Purchase7-Entwicklungsprovisioningprofil mit diesem Zertifikat aktiviert ist. ([Mitgliedszentrum] [1]).

7-Provisioning-Profil zum Xcode Observer hinzufügen.

8 - Geben Sie den Bundle-ID-Teil der App-ID in das Feld "Bundle Identifier" im Bereich "Mein Ziel" in Xcode ein.

9-Unterschreiben Sie den Code mit meinem Zertifikat.

HINWEIS: Ich teste die Anwendung auf dem Finder nicht den Xcode Debuger.

Hier ist die Anwendung Code:

Rubrik:

#import <Cocoa/Cocoa.h> 
#import <StoreKit/StoreKit.h> 
@interface AppDelegate : NSObject <NSApplicationDelegate,SKProductsRequestDelegate,SKPaymentTransactionObserver> 
{ 
    NSWindow *window; 
    IBOutlet NSTextField *label; 
    IBOutlet NSButton *checkox; 
} 

@property (assign) IBOutlet NSWindow *window; 
-(void)request:(SKRequest *)request didFailWithError:(NSError *)error; 
- (void)applicationDidFinishLaunching:(NSNotification *)notification; 
-(void)requestUpgradeProductsData; 
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response; 
-(IBAction)checkBoxState:(id)sender; 
@end 

Code:

#import "AppDelegate.h" 

@implementation AppDelegate 

@synthesize window = _window; 

-(void)applicationWillFinishLaunching:(NSNotification *)notification 
{ 
    NSLog(@"applicationDidFinishLaunching"); 
    NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL]; 
    if (![[NSFileManager defaultManager] fileExistsAtPath:[receiptURL path]]) 
    { 
     NSLog(@"no receipt - exit the app with code 173"); 
     exit(173); 
    } 
} 

-(void)requestUpgradeProductsData 
{ 
    if([SKPaymentQueue canMakePayments]) 
    { 
     SKProductsRequest *request =[[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObjects:@"com.comany.MyApp.DLC1",@"com.comany.MyApp.DLC2",nil]]; 
     request.delegate = self; 
     [request start]; 
    } 
} 

-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 
{ 
    int count = response.products.count; 
    if(count!=0) 
    { 
     NSLog(@"COUNT IS NOT ZERO"); 
    } 
    else 
    { 
     [label setStringValue:@"NO PRODUCT"]; 
    } 
} 

-(IBAction)checkBoxState:(id)sender 
{ 
    [self requestUpgradeProductsData]; 
} 
-(void) request:(SKRequest *)request didFailWithError:(NSError *)error 
{ 
    NSLog(error); 
} 
@end 

-My Code immer Ausfahrt "exit (173);" und wenn ich diese Prüfung entferne, bekomme ich alle meine Produkte als ungültige Kennzeichnungen. -And wenn ich meinen Code mit 3D-Party-Zertifikat unterschreiben App-Shop fragt nach Login-Informationen, Aber wenn ich meinen Code mit Entwicklungszertifikat App-Store unterschreiben tut nichts.

danke.

https://developer.apple.com/membercenter/index.action

Antwort

1

Starten Sie die App im Finder, es bedeutet nicht, dass Sie außerhalb Xcode aus irgendeinem Grund starten.

  1. Produkt auswählen -> Archiv aus dem Menü
  2. Ihre Anwendung auswählen und wählen Sie Verteilen
  3. Export
  4. So, jetzt als Anwendung wählen, wenn Sie die exportierte App starten, wird die App Ausfahrt zwingen und den Test bitten Sobald Sie sich angemeldet haben, wird die App automatisch neu gestartet.

jetzt haben Sie eine recept und in der Lage, einen Kauf zu testen.