我该如何设定了强制用户打开应用程序的本地通知。 我需要我的应用程序设置一个本地通知的日出和日落,但我不想问的人开放的应用程序。 我知道我可以通过scheduleLocalNotification有多达64个通知,但我需要设置了一年,所以我应该能够在后台运行应用程序,并在后台将来日出和日落设置警报。
Answer 1:
答案很简单,你不能。 就随时在后台您的应用程序无法运行; 它不能安排一个计时器本身醒来时,他们是由于发布多个通知。
你可以接近这样的事情的唯一方式是通过具有发送后台推送通知到你的应用程序作为一个警钟,当新一批的64个通知即将接近需要发布一个服务器。 然而,这将依赖于用户这一事实不会终止您的应用程序。 如果用户确实,那么你就必须到非后台推送通知发送给用户,并希望他们点击它来启动你的应用程序。
Answer 2:
Android的API意识已经最近宣布的新功能,为您的使用情况的简单解决方案(避免你不必明确管理位置的请求或计算日出时间)。 实现你试图做的方法是创建并注册TimeFence
相对于日出/日落规定。
例如:
// Create TimeFence
AwarenessFence sunriseFence =
TimeFence.aroundTimeInstant(TimeFence.TIME_INSTANT_SUNRISE,
0, 5 * ONE_MINUTE_MILLIS);
// Register fence with Awareness.
Awareness.FenceApi.updateFences(
mGoogleApiClient,
new FenceUpdateRequest.Builder()
.addFence("fenceKey", sunriseFence, myPendingIntent)
.build())
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) {
Log.i(TAG, "Fence was successfully registered.");
} else {
Log.e(TAG, "Fence could not be registered: " + status);
}
}
});
你会得到回调时,栅栏的计算结果为TRUE
日出,当它评估回FALSE
日出后5分钟。
请检查围栏API代码段,用于如何增加您的自定义应用程序的逻辑文档。
文章来源: Settings alarms while app is closed