我想这样做,以便用户在我的Android游戏中完成动作后每24小时收到一次推送通知。推送通知正在使用Parse,但我不知道如何延迟24小时,然后发送推送。 Parse文档提到了后台工作,但由于这些工作在15分钟后超时,我认为我不能使用它们。是否有我遗漏的东西,或者我可以使用的另一种选择?
答案 0 :(得分:0)
您可以依赖于应用内通知而不是推送通知,因为您必须设置AlarmManager以在24小时后触发通知,并且在收到警报后您可以初始化必须在24之后触发的另一个警报小时。
<强>例如:强>
public static void startAlarm(Context context) {
Calendar nextAlarmTime = getNextAlarmTime(context);
if (nextAlarmTime != null) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intentAlarm = new Intent(context, AlarmReceiver.class);
alarmManager.set(AlarmManager.RTC_WAKEUP, nextAlarmTime.getTimeInMillis(), PendingIntent.getBroadcast(context, 1, intentAlarm, PendingIntent.FLAG_CANCEL_CURRENT));
}
}
<强> AlarmReceiver.java 强>
public class AlarmReceiver extends BroadcastReceiver {
private static final String TAG =
AlarmReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
initNotificationMessage(context);
scheduleNextNotification(context);
}
}
如果您希望更改通知消息,则必须在显示通知之前对服务器进行api呼叫,并从服务器接收消息并将其显示为通知
如果您坚持使用推送通知,最好将逻辑保留在客户端而不是使用cron job或任何类似的机制,这意味着使用与上述相同的逻辑并请求您的服务器发送将通知推送到您的设备。