2014-03-26 10 views
6

Zum Beispiel zu beurteilen: Es gibt zwei verschiedene Spielcharaktere in einer einzigen iPhone-Gerät, wir nennen es A und B.iOS IAP, wie mehrere Benutzer auf dem gleichen Gerät

Zuerst App Benutzer-Login als A, führt er eine IAP-Aktion aus, die eine Abmeldung ohne den Kauf abgeschlossen hat.

Dann App Benutzer-Login als B, dann beenden Ereignis der Ankunft kaufen, das ist das Problem, wie der Eingang zu A gehört zu beurteilen, nicht B.

Ich googeln, fand SKMutablePayment.requestData kann lösen diese verwendet werden, Problem, aber Apple Dokument sagte mir, dies ist eine vorbehaltene Eigenschaft, und muss Null sein, sonst wird die Zahlung abgelehnt werden.

requestData Reserviert für zukünftige Verwendung. (schreibgeschützt)

@Eigenschaft (nicht atomisch, kopieren, schreibgeschützt) NSData * requestData Diskussion Der Standardwert ist null. Wenn requestData nicht null ist, wird Ihre Zahlung Anfrage abgelehnt.

Verfügbarkeit Verfügbar in iOS 3.0 und höher. Erklärt In SKPayment.h

+0

so Ihre Frage ist, wie die Benutzeridentität (wie zB Benutzername) passieren zusammen mit dem IAP Anfrage? – Raptor

+0

@Raptor ja, denke ich. – user1298239

+0

Ich denke, das ist kein Problem. Durch das Abmelden werden Ihre IAPs nicht entfernt. –

Antwort

7

Dank für jedermann Antwort

schließlich fand ich SKMutablePayment.applicationUsername kann privates Konto Benutzername, sparen, sondern es auf iOS7.0 verfügbar.

speichern:

SKMutablePayment* payment = [SKMutablePayment paymentWithProduct:product]; 
payment.applicationUsername = @"my_username_1001"; 

lesen:

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
{    
    for (SKPaymentTransaction* trans in transactions) { 
     switch (trans.transactionState) { 
      case SKPaymentTransactionStateFailed: 
       [[SKPaymentQueue defaultQueue] finishTransaction:trans]; 
       break; 
      case SKPaymentTransactionStatePurchased: 
       // got private user account here 
       NSString* applicationUsername = [[trans payment] applicationUsername]; 
       break; 
      case SKPaymentTransactionStatePurchasing: 
       break; 
      case SKPaymentTransactionStateRestored: 
       break; 
     } 
    } 
} 
+0

great finden Sie eine Idee, wie Sie dies auf ios6 umgehen? – MiMo

+0

Das ist ein sehr guter Ansatz :) aber ich habe ein Problem, wenn ich versuche, Transaktionen wiederherzustellen. Nach dem Wiederherstellen gibt applicationUsername NULL zurück. Kannst du mir helfen? –

+0

@AlexSamnas hast du versucht trans.originalTransaction.applicationUsername? – LolaRun

Verwandte Themen