2014-01-16 78 views
4

我正在使用RMStore庫在我的iOS應用中使用自動更新訂閱。它適用於購買,但我找不到任何文檔如何檢查RMStore當前訂閱是否仍然活動?iOS SDK自動可更新訂閱與RMStore - 如何驗證活動訂閱與否?

代碼檢查購買的產品並不在這裏工作:

if([persistence isPurchasedProductOfIdentifier:SUBSCRIPTION_1]) { ... } 

此代碼始終是表明訂閱購買(因爲它),但不檢查該訂閱已按日期過去了。

我看到RMAppReceipe.h文件的方法「isActiveAutoRenewableSubscriptionForDate」,但我沒有找到任何文件如何以檢索訂閱receipe在我與RMStore以及如何應用程序檢查此receipe與isActiveAutoRenewableSubscriptionForDate方法。請幫忙。

摘要:我只需要確認訂閱@「com.fanfun.apptestsubscription1」至今仍然是(當前日期)或者沒有激活。請爲此簡單檢查提供示例代碼。

回答

1

我不知道你使用的庫。但是,如果您有權訪問收據本身,您可以使用base64對收據進行解碼,以在「過期日期」字段中獲取收據的持續時間。

檢查這些鏈接,以及:

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW2

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html

UPDATE

[RMAppReceipt containsActiveAutoRenewableSubscriptionOfProductIdentifier:identifier forDate:date]

應該做的伎倆

+0

我怎樣才能獲得收據應用內購買? – Dmitry

+0

RMStore已經有方法來驗證receipes(它用OpenSSL解析食譜),我想要使用它。我無法編寫自己的方法來解析receipes,這對我來說太難了。 – Dmitry

+1

實際上看着RMStore庫的來源,有一個名爲RMAppReceipt的類(https://github.com/robotmedia/RMStore/blob/master/RMStore/Optional/RMAppReceipt.h)。這個類有一個屬性「subscriptionExpirationDate」(ln 152)。現在問題仍然是如何獲得RMApp收據... – Denis

6

我想我找到了一個解決方案,它的工作:

RMAppReceipt* appReceipt = [RMAppReceipt bundleReceipt]; 

NSLog(@"Is subscription 1 active: %d", [appReceipt containsActiveAutoRenewableSubscriptionOfProductIdentifier:SUBSCRIPTION_1 forDate:[NSDate date]]); 
+1

請記住,如果收據不可用,'bundleReceipt'可能會返回nil。如果是這樣,您將需要先刷新收據(通過RMStore中的'refreshReceipt')。 – hpique

+1

@hpique什麼是刷新它的最佳方式?在我的應用程序中,當用戶進入某個屏幕時,我必須檢查活動訂閱。如果訂閱處於活動狀態,用戶可獲得一些優惠,如廣告區塊每次查找活動訂閱時,我都可以檢查無收據,如果檢查失敗,請求用戶在詢問AppleID密碼之前刷新它。但缺點是,當他第一次訪問這個屏幕時,每個用戶都會看到這個對話框。是否有任何有關收據刷新的最佳做法以儘量減少令人不快的警報? – Spail

+0

@Spail你找到了刷新它的最佳掃描儀嗎? – JERC