我的應用程序免費六個月。在第六個月結束後,我需要實施應用內升級應用程序。 設想情況,如果用戶未選擇inapp購買並刪除應用,則在第六個月結束之後。現在他們再次從appstore安裝它。所以我如何找到特定的用戶再次安裝我的應用程序。什麼在我的iOS應用中實現的應用內購買類型?
我已閱讀應用內商店類型。它對我來說有點困惑。我已經實施了Non-cpnsumable類型,所以它基本上只購買一次產品並長時間使用它。我的情況也是類似的,但用戶不應該在第六個月免費使用我的應用程序。
我的應用程序免費六個月。在第六個月結束後,我需要實施應用內升級應用程序。 設想情況,如果用戶未選擇inapp購買並刪除應用,則在第六個月結束之後。現在他們再次從appstore安裝它。所以我如何找到特定的用戶再次安裝我的應用程序。什麼在我的iOS應用中實現的應用內購買類型?
我已閱讀應用內商店類型。它對我來說有點困惑。我已經實施了Non-cpnsumable類型,所以它基本上只購買一次產品並長時間使用它。我的情況也是類似的,但用戶不應該在第六個月免費使用我的應用程序。
您可以使用鑰匙串存儲首次啓動日期。每次應用程序將午餐只是檢查存儲日期和當前日期之間的差異。如果超過6個月允許用戶購買。 即使應用程序是unInstall,鑰匙串也不會刪除數據。它也會在卸載應用程序後保留存儲的數據。同樣,如果您將安裝並運行應用程序,它將提供舊商店數據。
如果用戶更改設備的日期會發生什麼? – Apurv
如果您正在進行此操作,則任何日期僅取決於設備日期。如果你想完全控制日期,那麼只需從服務器獲取日期。告訴服務器在每次應用程序運行時爲您提供當前日期。 – user3663584
在這種情況下,沒有連接功能的設備將允許應用程序在6個月後運行。 – Apurv
您必須在後臺進程中繼續檢查應用安裝的當前日期,並在您的應用內購買流程達到6個月時驗證您的應用購買流程。我附上一段代碼供您參考
-(void)dateCheck
{
NSDate *current = [NSDate date];
NSDateFormatter *weekFormatter = [[NSDateFormatter alloc] init];
[weekFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *expirDate=[current dateByAddingTimeInterval:60*60*24*14];
NSString *expireString = [weekFormatter stringFromDate:expirDate];
[[NSUserDefaults standardUserDefaults]setValue:expirDate forKeyPath:@"expireDate"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
如果用戶將unInstall應用程序然後NSUserDefaults值也被刪除。 – user3663584
您可以使用設備UDID或設備令牌來識別設備。使用UDID的設備不會超過六個月。 此外,我們可以使用帳戶登錄相同。新的用戶名登錄。通過考慮這兩件事,我們可以做出鑑定。
無論您的實施如何,這似乎是一個有風險的設計「11.9 包含內容或服務在有限的時間後過期的應用程序將被拒絕,除了特定的批准內容(例如電影,電視節目,音樂,書籍)」https ://developer.apple.com/appstore/resources/approval/guidelines.html – Jonah