2017-02-03 3 views
2

Ich möchte das Abonnement dieses Kunden jetzt über/vollständig erkennen, damit ich die Einrichtungen, die ich ihnen zur Verfügung gestellt habe, entfernen kann.Ermitteln der Ablauffrist für Apple-Abonnements

Auf jedem Start der Anwendung, habe folgende ich Art von Details von Apple Abonnement:

public void CheckIfSubscriptionIsActive(){ 
    ConfigurationBuilder builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); 
    // Get a reference to IAppleConfiguration during IAP initialization. 
    IAppleConfiguration appleConfig = builder.Configure<IAppleConfiguration>(); 
    if (!string.IsNullOrEmpty (appleConfig.appReceipt)) { 
     Debug.Log (appleConfig.appReceipt); 
//   InstantiateDebugText (DebugInfoPanel, "APP Receipt Base64 " + appleConfig.appReceipt); 
     var receiptData = System.Convert.FromBase64String (appleConfig.appReceipt); 
//   InstantiateDebugText (DebugInfoPanel, "receipt Data "+ receiptData); 
     AppleReceipt receipt = new AppleValidator (AppleTangle.Data()).Validate (receiptData); 
     InstantiateDebugText (DebugInfoPanel, "Apple receipt " + receipt); 
     foreach (AppleInAppPurchaseReceipt productReceipt in receipt.inAppPurchaseReceipts) { 
      Debug.Log ("PRODUCTID: " + productReceipt.productID); 
      Debug.Log ("PURCHASE DATE: " + productReceipt.purchaseDate); 
      Debug.Log ("EXPIRATION DATE: " + productReceipt.subscriptionExpirationDate); 
      Debug.Log ("CANCELDATE DATE: " + productReceipt.cancellationDate); 
      InstantiateDebugText (DebugInfoPanel, "PRODUCTID: " + productReceipt.productID); 
      InstantiateDebugText (DebugInfoPanel, "PURCHASE DATE: " + productReceipt.purchaseDate); 
      InstantiateDebugText (DebugInfoPanel, "EXPIRATION DATE: " + productReceipt.subscriptionExpirationDate); 
      InstantiateDebugText (DebugInfoPanel, "CANCELDATE DATE: " + productReceipt.cancellationDate); 
     } 
    } 

Da bei der Erfassung von Bezugsrechte-Ablaufberechnung, kann ich nicht Hilfe von aktuellem iPhone Datum nehmen und Zeit und meiner App Ich habe keine speziellen Server-bezogenen Dinge verwendet, daher bin ich völlig abhängig von Apple.

Weil nur aus diesem Grund ich Auto Renewable Subscription verwendet habe, so dass ich Informationen zur Abonnementdauer habe.

Jetzt teilen Sie uns Ihre Gedanken in Bezug auf diese, wie zu erkennen, Abonnement ist abgelaufen jetzt?

Antwort

3

Sie sollten yoru Empfang zuerst mit Appstore validieren. Verwendung Empfang Daten, die Sie aus folgenden erhalten:

var receiptData = System.Convert.FromBase64String (appleConfig.appReceipt); 

können Sie überprüfen, wie Quittung mit Apfel zu validieren Server von here

jedoch keine Relais nicht über den Status von Status erhalten. Für den Autorenniew-Empfang wird der Erfolg zurückgegeben, auch wenn der Empfang gültig, aber abgelaufen ist. Als Antwort erhalten Sie Quittungen. Durchlaufen Sie alle Belege, suchen Sie nach dem Feld "expires_date" für die Produkt-ID = Ihre erforderliche Produkt-ID. "expires_date" enthält epoch time.. Sie können prüfen, ob dieses Datum größer ist als das aktuelle Datum und ob Sie einen Beleg gefunden haben (productid = yourproducid & & expireDate> currentEpocDate), das Abonnement ist gültig. sonst ist es abgelaufen oder gestoppt oder nicht gekauft.

erstellen json,

{ 
    "receipt-data": "receiptData (string))" 
} 

und per Post Server Apfel - (https://sandbox.itunes.apple.com/verifyReceipt). Als Antwort erhalten Sie eine Bestätigung mit dem Status validation.

Hinweis:

In der Testumgebung, https://sandbox.itunes.apple.com/verifyReceipt als URL verwenden. Verwenden Sie in der Produktion https://buy.itunes.apple.com/verifyReceipt als URL.

+0

danke für Ihre tolle Antwort. Lassen Sie mich andere Zweifel stellen, 1) um den Ablauf des Abonnements zu überprüfen, müssen wir unseren benutzerdefinierten Server abfragen? 2) Informationen zum Abonnementablauf können wir direkt von Apple abrufen? anstatt vom benutzerdefinierten Server abhängig zu bleiben? – Siddharth

+0

Sie können direkt auf dem Apple-Server nach dem Abonnementstatus suchen. Selbst wenn Sie einen benutzerdefinierten Server verwenden, muss der benutzerdefinierte Server eine Anfrage an den Apple-Server senden, um den Empfang zu bestätigen. Wie ich im Hinweis hinzugefügt habe: Sie können die angegebene URL zur Validierung verwenden und https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html einmal überprüfen. – Darshana

+0

oben haben Sie einen Vergleich des Ablaufdatums und des aktuellen Datums für die Validierung des Abonnementzwecks angegeben, zu welchem ​​Zweck? Wenn Apple mich über den Abonnementstatus gemäß Ihrer letzten Nachricht antwortet. Dieses Ding verwirrt mich. Da ich keinen eigenen Server habe, kann ich das aktuelle Datum für die Validierung des Abonnements nicht annehmen. – Siddharth

Verwandte Themen