2014-01-06 77 views
0

我正在嘗試使用MKStoreKit在我的應用中實施應用內購買。除了我無法弄清楚的一件事之外,它在很大程度上工作得很好。我正在使用以下方法來恢復事務。MKStoreKit isFeature購買了報告不正確

-(void)restoreToFullVersion:(UIViewController *)sender{ 
    [MBProgressHUD showHUDAddedTo:sender.view animated:TRUE]; 
    [[MKStoreManager sharedManager] restorePreviousTransactionsOnComplete:^{ 
     [MBProgressHUD hideHUDForView:sender.view animated:TRUE]; 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"userDidUpgradeNotification" object:nil userInfo:nil]; 
     [self upgradeSuccessful]; 
    } onError:^(NSError *error) { 
     [MBProgressHUD hideHUDForView:sender.view animated:TRUE]; 
    }]; 
}//end method 

我已經nslogged完成塊和上面的代碼如預期,除了如果你再調用

[MKStoreManager isFeaturePurchased:kMainNoncomsumable]; 

返回false所有的作品。我正確地認爲在恢復過程完成後MKStoreManager應該爲isFeaturePurchased返回true,或者我錯過了什麼?

我只實現一個非消耗性的應用程序內購買,並使用Cocoa-pod將MKStoreManager包含到我的項目中。

看來好像其他人在SO上有相同的problem,但我還沒有找到有效的解決方案。

在此先感謝您的幫助!

回答

0

我得到了它的工作,以防萬一未來有人遇到同樣的問題,這就是我所做的。我刪除了應用程序內購買,並在iTunes Connect中創建了一個新的應用程序,使用可可豆莢重新安裝了MKStoreKit,將應用內購買ID重新輸入MKStoreKit plist文件,並等待了一天,現在一切正常。

1

從我所看到的,MKStoreKit調用完成塊是否恢復任何購買。你看,即使沒有遇到任何錯誤,也可能沒有任何購買來恢復。

你應該做的測試恢復功能:

  1. 添加到應用程序委託的-application:didFinishLaunchingWithOptions:方法:

    [[MKStoreManager sharedManager] removeAllKeychainData]; 
    
  2. 創建於iTunesConnect一個新的測試帳號。

  3. 使用此測試帳戶在您的應用中進行購買。
  4. 致電+isFeaturePurchased:確保購買成功(應返回YES)。
  5. 強制關閉您的應用並重新啓動它,以便-removeAllKeychainData被調用。
  6. 致電+isFeaturePurchased:確保應用程序不知道該產品已被購買(應返回NO)。
  7. 致電-restorePreviousTransactionsOnComplete:onError:
  8. 致電+isFeaturePurchased:確保產品已恢復(應返回YES)。

確保您在整個過程中使用相同的測試帳戶。

順便說一句,MKStoreKit沒有做任何收據上iOS7檢查,所以你可能想嘗試一個更近的庫像RMStore代替(似乎是的CocoaPods提供過)。