- From: Chris Wilson <cwilso@google.com>
- Date: Fri, 25 Jul 2014 09:52:12 -0700
- To: Ravikumar Dandu <rdandu@mozilla.com>
- Cc: Giridhar Mandyam <mandyam@quicinc.com>, Peter Beverloo <beverloo@google.com>, Marijn Kruisselbrink <mek@google.com>, "public-geolocation@w3.org" <public-geolocation@w3.org>, Stephen Li <stephenl@qca.qualcomm.com>
- Message-ID: <CAJK2wqV65De7R8Yz-zKOfYdP97GyeNYv5HmOsbW5zrYAjbYNKg@mail.gmail.com>
I added a first draft of a use case document (based on the use cases from the Geolocation spec and those from Ravi and Marijn) and issued a pull request. (May wish to add me to the editor permissions on the repo.) You can see it currently at http://cwilso.github.io/geolocation-api/use-cases.html. On Thu, Jul 24, 2014 at 5:48 AM, Ravikumar Dandu <rdandu@mozilla.com> wrote: > Hi Peter, Marijn, > Great ideas. We can create a doc at the github geolocation-api on the > use cases to solve. Here is a first draft list: > > 1)Action generated when User enters an area > examples: > WebApps auto-checkin to a hotel when user enters the hotel > Businesses sending advertisements, offers, discounts, when device gets > close to their store. > Reminder App sends event on todo items when close. eg: reminder to buy > a batteries when within proximity of a retail shop > > 2)Action generated when User exits an area > examples: > When user exits office, sends a text to spouse stating will be home in > X minutes. > When user exits home, app makes sure the lights are turned off > > Regards > Ravi > > ----- Original Message ----- > From: "Giridhar Mandyam" <mandyam@quicinc.com> > To: "Peter Beverloo" <beverloo@google.com>, "Marijn Kruisselbrink" < > mek@google.com> > Cc: public-geolocation@w3.org, "Ravikumar Dandu" <rdandu@mozilla.com>, > "Stephen Li" <stephenl@qca.qualcomm.com> > Sent: Thursday, July 24, 2014 2:39:19 PM > Subject: Geolocation API Github Repo and Spec Editors > > Hello All, > A github repo has been created: https://github.com/w3c/geolocation-api. > > In addition, Ravi Dandu of Mozilla and Stephen Li of Qualcomm Atheros have > stepped up to be co-editors. > > -Giri Mandyam, W3C Geolocation WG Chair > > From: Peter Beverloo [mailto:beverloo@google.com] > Sent: Thursday, July 24, 2014 5:19 AM > To: Marijn Kruisselbrink > Cc: public-geolocation@w3.org > Subject: Re: Geofencing API proposal > > Hi Marijn, > > Thanks for the proposal! I think it's definitely a good document to kick > off discussions about how we could support geofencing on the Web. > > This thread currently encapsulates the API, an updated version of said API > and proposed solutions for a rather large open question, the event delivery > model for this feature. I worry that this makes it difficult for this > thread to remain focused. > > Perhaps we should take a step back, and first define the problem which we > actually want to solve (e.g. looking at the use-cases in much more depth, > writing example code to see how the proposed API(s) would solve them). It > would also be great if there could be a GitHub repository; not just for the > storing specification's drafts, but also to track open suggestions, > concerns and issues. > > Thanks, > Peter > > On Wed, Jul 23, 2014 at 11:13 PM, Marijn Kruisselbrink <mek@google.com > <mailto:mek@google.com>> wrote: > I incorporated some feedback I got and posted a new IDL file at > https://gist.github.com/mkruisselbrink/b68110599a986bb9c963 (I'm sure my > IDL isn't perfectly valid webidl, and the naming of various > structures/methods isn't great either, but hopefully the intent is clear). > The main changes here are the new getRegionState method, and addition of a > position attribute to the enter/leave events (the other potential region > types at the bottom are more illustrative than that I'm actually proposing > to include those). > > Other feedback I've gotten is that it would be nice to be able to use > geofencing in webpages without service workers as well. I agree that this > could be beneficial, but it raises some questions about the scoping of > geofence registrations. If Service Workers are a requirement, like in my > current proposal, the most obvious thing to do is for geofence > registrations to always be scoped to the serviceworker associated with the > page the registration was made from. If you also allow registration from > web pages without service workers, it is less clear what the best option > is. The options I can think of are: > > Option 1: Have completely separate scopes for geofences registered in > service workers and geofences registers in webpages. A geofence that is > registered in a service worker will only trigger events in that service > worker, and a geofence that is registered in a webpage will only trigger > events in that particular webpage (and the lifetime of the registration is > also linked to the lifetime of the webpage). If a webpage wants to register > a geofence for its associated service worker it will need to post message > to the service worker and have the service worker do the actual > registration. > > Option 2: If a geofence is registered in a web page without an active > service worker, the registration is scoped to that webpage and events get > delivered to the webpage. If however a geofence is registered in a web page > with an active service worker, the registration is scoped to the service > worker, and events are only delivered to the service worker. Geofences that > are registered from the service worker also only trigger events in the > service worker. > > Option 3: Give webpages a choice when registering a geofence. Add some > kind of flag that specifies if the registration should be scoped to the > webpage or to the service worker. > > All these options have in common that every service worker registration > only results in events being dispatched in one context. Another set of > options would be to dispatch geofence enter/leave events in all pages that > share a service worker, or in just the one webpage that registered a > geofence as well as in its service worker (but not in other webpages). I > think going this way would quickly lead to madness and needless complexity > though. > > Of these options I think option 1 would be the simplest option while still > fulfilling all the use cases. The other options might make some things > easier, but are also less consistent and have more potential for confusion, > without enabling anything that isn't possible in option 1. > > Any thoughts? > > On Fri, Jul 18, 2014 at 9:51 AM, Marijn Kruisselbrink <mek@google.com > <mailto:mek@google.com>> wrote: > > Hi, I’m a Software Engineer working on blink/chrome at Google. I’m > currently working on brining Geofencing to Service Workers/the web, so here > is a proposal for an API for that. > > Use cases > > · Companies presenting their Web app based on the user’s locality (e.g. > showing their membership card # when they’re in a store).. > > · Web apps for assisting the user based on their locality (e.g. > calendars, alarms, reminders, accessibility devices and so on). > > · Similarly, Web apps showing photo spots, events and transport > information based on the user’s locality (similar to Google Now). > > · Offers or discounts presented to a user when they’re near a store. > > API proposal > > [exposed=Window&Worker] > > partial interface Navigator { > > readonly attribute Geofenci<http://dev.w3.org/geo/api/spec-source.html>ng > geofencing; > > }; > > > partial interface ServiceWork< > https://github.com/slightlyoff/ServiceWorker/blob/master/explainer.md>erGlobalScope > { > > attribute EventHandler ongeofenceenter; > > attribute EventHandler ongeofenceleave; > > }; > > > The ongeofenceenter and ongeofenceleave events have a “region” attribute > with the relevant GeofencingRegion. > > [NoInterfaceObject] > > interface Geofencing { > > Promise<undefined> registerRegion(GeofencingRegion region); > > Promise<undefined> unregisterRegion(DOMString regionId); > > Promise<sequence<GeofencingRegion>> getRegisteredRegions(); > > }; > > > Possible failure reasons for registerRegion include no service worker > being associated with the page, the user not accepting the location > request, and maybe others. If an attempt is made to register a region with > the same ID as that of a region that is already registered, the new region > will override the old region. > > > Possible failure reasons for unregisterRegion include no region being > registered with the given ID. > > > The getRegisteredRegions method returns all currently registered regions. > > The promise is resolved to a (potentially empty) list of GeofencingRegions > on success, and rejected on failure to get the regions. A possible failure > reason would be no service worker being active for the page. No regions > being registered is not a failure. > > > Regions are specified by the following API: > > [NoInterfaceObject] > > interface GeofencingRegion { > > readonly attribute DOMString id; > > }; > > > [Constructor(optional String? id, dictionary options), > exposed=Window&Worker] > > interface CircularRegion : GeofencingRegion { > > const double MIN_RADIUS = 10; > > const double MAX_RADIUS = 1000; > > readonly attribute double latitude; > > readonly attribute double longitude; > > readonly attribute double radius; > > }; > > > All regions may be referred to by a string identifier. Exactly one region > can be registered per identifier. > > > The radius is specified in meters, and must be between MIN_RADIUS and > MAX_RADIUS (inclusive). The values of MIN_RADIUS and MAX_RADIUS may be > platform dependent. > > If no id is provided the empty string is used. Latitude, longitude and > radius must always be provided. > > > > > > >
Received on Friday, 25 July 2014 16:52:39 UTC