我有一个用例,当天气晴朗时,会发出通知,用户活动正在行走,而且还有一个特定的位置。我应该如何结合这三个条件?
我知道我们可以使用.d.ts
添加多个围栏,但由于我们将从Snapsot API获取天气数据,我们如何在Fence API中添加该条件。
我相信有人会遇到同样的问题并解决它。请分享您的意见。
答案 0 :(得分:0)
Awareness API尚不支持基于Weather上下文创建围栏。
如您所述,您可以为位置和活动创建AwarenessFence,然后将其与AwarenessFence.and()
或AwarenessFence.or()
合并。
如果您希望天气包含在通知标准中,您可以做的一件事是在收到意图的围栏回调时请求天气快照,然后在天气符合您的情况下发出通知目标条件。
例如,直接从Awareness API guide,
中的代码段借用public class MyFenceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
FenceState fenceState = FenceState.extract(intent);
if (TextUtils.equals(fenceState.getFenceKey(), "headphoneFence")) {
switch(fenceState.getCurrentState()) {
case FenceState.TRUE:
WeatherResult weatherResult =
Awareness.SnapshotApi.getWeather(mClient).await();
if (weatherResult.getStatus().isSuccess()) {
Weather weather = weatherResult.getWeather();
if (myDesiredWeather(weather)) {
sendNotification();
}
}
break;
case FenceState.FALSE:
Log.i(TAG, "Headphones are NOT plugged in.");
break;
case FenceState.UNKNOWN:
Log.i(TAG, "The headphone fence is in an unknown state.");
break;
}
}
}
}
不可否认,这是实现你想要的东西的一种迂回方式,但它似乎是解决你的用例的唯一方法。