![](/img/trans.png)
[英]How To Check If User Has Already Made In-App Purchase? To Determine Their Access Level/Rights
[英]In-App Purchase - How to determine if a purchase has already been made?
為什么很難找到如何做到這一點超出了我的范圍-所以也許我正在嘗試以錯誤的方式進行此操作-誰知道-希望你們當中的一個,哈哈。
我有一個說“購買”的按鈕(用於非消耗品)。 如果購買成功,則更新NSUserDefaults購買= YES並刪除按鈕。 一切都很好到這里。
現在,當用戶刪除應用程序並想在新設備上重新安裝或安裝時,在這些情況下,我想顯示的是“恢復”按鈕來代替“購買”按鈕。 單擊“還原”按鈕,將調用restoreCompletedTransactions。 對我來說似乎合乎邏輯-用戶不想看到“購買”按鈕-他們已經購買了。
問題是購買了NSUserDefaults = YES在重新安裝或新安裝時將不可用。 因此,我的問題是如何確定該應用程序之前是否已購買過,因此可以顯示“購買”按鈕或“恢復”按鈕。 有沒有辦法確定用戶是否已進行了此應用內購買?
預先感謝拜倫。
將來沒有很好的方法將狀態從一個應用程序安裝轉移到另一個應用程序安裝。 您也許可以為此濫用鑰匙串,但不應該這樣做。
只要一直顯示“購買”即可。 在iOS上,這是處理這種情況的標准方法。 人們習慣於看到購買按鈕,即使他們以前已經購買過,他們也會明白這意味着什么。 當然,您仍然需要在某處還原按鈕。
根據您使用的商店類型,您有兩個選擇來放置還原按鈕。
如果您有類似商店的界面,例如列出所有產品的tableView,請在tableView的末尾放置一個“ Restore Purchase”單元。 這里以PCalc Lite的界面為例:
如果您沒有類似商店的界面,請在應用程序的設置部分中放置一個按鈕。 迪斯科動物園就是這樣做的:
您可以使用應用程序查詢的后端服務器來確定用戶是否已通過登錄設備上的帳戶進行購買。 出於您指出的原因,Apple會要求您具有某種檢查設施...用戶不必在新設備或他們可能擁有的其他設備上重新購買。 您必須將帳戶注冊設置為用戶可選,再次Apple會要求這樣做。
我知道這是一個老問題,您可能已經解決了,但是在設計用於購買機制的用戶友好界面方面,我遇到了類似的問題,並找到了以下解決方案:
-(IBAction) purchase
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
message:<# A brief explanation #>
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Restore",@"Purchase", nil];
alert.delegate = self;
alert.tag = _IAPTAG;
[alert show];
}
然后在警報視圖委托函數中:
-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertView.tag == _IAPTAG)
{
if(buttonIndex == 0)
{
//cancel
}
else if(buttonIndex == 1)
{
//restore
}
else if(buttonIndex == 2)
{
//purchase
}
}
}
因此,還原選項將還原,最終購買將購買。 如果用戶是第一次購買,則他/他將不必擔心會兩次購買。 如果用戶之前購買過並將其安裝在另一台設備上,則他/她將知道購買按鈕將提供還原選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.