私は、Android と iPhone で動作するワークライト (現在は mobileFirst) アプリの開発に取り組んでいます。問題の 1 つは、ローカルのプッシュ通知でユーザーに通知するために、いくつかの時点でユーザーを見つける必要があることです。アプリがフォアグラウンドにある間はすべて正常に動作しているようですが、バックグラウンドでも動作する必要があります。
とりわけ次のリンクを確認しましたが、まだ何も機能しません。
- https://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.dev.doc/devref/t_keeper_app_running_in_background.html
- https://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.0.0/com.ibm.worklight.help.doc/apiref/r_wl_location_geoAcquirePosition.html
それが役立つ場合、これは私のコードです:
function getFirstPositionAndTrack() {
// use GPS to get the user's location
var geoPolicy = WL.Device.Geo.Profiles.LiveTracking();
geoPolicy.timeout = 60000; // set timeout to 1 minute
geoPolicy.maximumAge = 10000; // allow to use a position that is 10 seconds old
// note: to see at high-accuracy, change RoughTracking above to LiveTracking
// get the user's current position
WL.Device.Geo.acquirePosition(
function(pos) {
// when we receive the position, we display it and start on-going acquisition
WL.Logger.debug("acquired position");
WL.Logger.debug("Longitude: " + pos.coords.longitude);
WL.Logger.debug("Latitude: " + pos.coords.latitude);
var triggers = new Object();
triggers.Geo = {};
var trigger_events = generateTrigger();
triggers.Geo = trigger_events;
WL.Device.startAcquisition({ Geo: geoPolicy }, triggers, { Geo: alertOnGeoAcquisitionErr } );
},
function(geoErr) {
alertOnGeoAcquisitionErr(geoErr);
},
geoPolicy
);
}
//Method that create triggers dinamically
function generateTrigger() {
var trigger_events = new Object();
angular.forEach(json.locations, function(location) {
var trigger = {
type: "DwellInside",
circle: {
longitude: location.longitude,
latitude: location.latitude,
radius: 100
},
dwellingTime: 3000,
callback: function() {
// WL.Logger.info("Enter branch");
// WL.Client.transmitEvent({ branch: "enter branch"}, true);
console.log("Location: "+JSON.stringify(location));
alert("We are in: "+location.name);
}
};
trigger_events["dwellArea_"+location.name] = trigger;
});
return trigger_events;
}
私は実際に iOS で試していますが、info.plist ファイルは次のようになります。
バックグラウンドでは何も得られませんが、フォアグラウンドに戻ると、一度にすべてを取得しているように見えます。つまり、実際に何かを行っているように見えますが、フォアグラウンドに戻るまで通知されません...バックグラウンドでワークライト プロセスをアクティブにしておく方法はありますか?
事前に感謝します。