最近在做项目遇到一个需求,在app未开启时,能够对用户进行通知提醒明天有培训课需要参加。最开始想到可以用第三方实现推送,如极光推送、融云推送等,但是这些推送的原理都是采用的长连接,仅仅当你的app在开启状态并且没有被结束进程时才能接收到推送通知,所以并不能实现想要的效果。偶然在玩蘑菇街app的时候发现了它里面有一个抢购提醒功能,原理就是把抢购事件添加到手机系统日历事件中并设置闹钟提醒,这样就保证在你的app被后台杀死后也能在指定的时间做到提醒功能。受到这个的启示,就把想要进行通知的事件添加到手机系统日历中。下面是部分代码。
private static String CALANDER_URL = "content://com.android.calendar/calendars";
private static String CALANDER_EVENT_URL = "content://com.android.calendar/events";
private static String CALANDER_REMIDER_URL = "content://com.android.calendar/reminders";
private static String CALENDARS_NAME = "Mytest";
private static String CALENDARS_ACCOUNT_NAME = "mytest";
private static String CALENDARS_ACCOUNT_TYPE = "calender.test";
private static String CALENDARS_DISPLAY_NAME = "Mytest";
//检查是否有现在存在的账户。存