我希望提供免费版本的应用。限制是,一旦您将15个注释保存到数据库,您将被限制为每月添加5个注释。每当您达到限制时,每次尝试在达到限制后制作新笔记,我都会提示用户通过应用内购买解锁应用。在达到初始限制后30天,或者如果更容易的话,他们将能够添加5个音符,并且在他们全部使用之前我不会打扰他们。限制不会翻转。
有没有人有解决这个问题的最佳方法?
答案 0 :(得分:1)
我建议你看看Wrapper (also called Adapter) Design Pattern。 实现该模式的解决方案包括:
class NotesManagement { public boolean addNote(Note newNote) { //Add Note to database and return whether it was successfull or not } }
class TrialNotesManagement extends NotesManagement { private NotesManagement notesManagement; public TrialNotesManagement() { notesManagement = new NotesManagement(); } @Override public boolean addNote(Note newNote) { if (isAllowedToAdd()) { return notesManagement.add(newNote); } else { return false; } } private boolean isAllowedToAdd() { //Do the check--Suggestion: in the "database" have a counter that it's reseted each 1st daty of the month } }
class AppController { NotesManagement notesManagement; public AppController() { if (isTrial()) { notesManagement = new TrialNotesManagement(); } else { notesManagement = new NotesManagement(); } } public boolean addNote(Note newNote) { notesManagement.addNote(newNote); } }
答案 1 :(得分:0)
我强烈建议您使用网络通信来完成此操作,即使您的应用不使用互联网。如果您真的希望能够相信用户不会篡改参数以实现额外的免费使用,则应该在您自己的服务器上进行验证,而不是在他们的设备上进行验证。
每当创建一个注释时,都应该使用用户标识符向您的服务器发送一条消息。然后,您可以跟踪笔记(即使您没有存储笔记的内容),也可以在需要时发回消息,以防止笔记被创建。
这样,您也可以在不更改应用的情况下更改阈值。