Technical Overview
A - Principles:
The main principle of Insiteo proximity interaction framework is to trigger Actions that your application’s end-user will actually experience. Actions can be as straightforward as a simple Notification but can also cover much richer interactions such as providing contextual information, customizing a UI or triggering a remote server based on location contexts.
Once an Action
is created, you need to define:
- when it is allowed to occur (see Action
Scheduling and Groups
) - when it actually occurs, based on a set of Action proximity
Triggers
B - Actions:
Insiteo SDK provides several types of “Actions”, among which:
Notifications
Webviews
Custom Actions
Notifications:
Notifications
can exist as a standalone Action
or can optionally be associated to the other types of Actions
Notification
main properties are a Title
and a Text
which are displayed to the end-user.
By default, Insiteo SDK redirects Notification
events to the OS local notification provider. You can intercept and change this default behaviour if you wish.
Would you like to embed any meta-data in a Notification
for further use by your application, we provide anExtra Data
container. We recommend using JSON or an equivalent structured format in this container.
Webviews:
Webview Actions
carry an URL resource which is intended to be opened as webview in your app or in a browser.
Custom Actions:
Custom Actions
allow you to pass any specific content you would like to your application.
Use the data container associated to a Custom Action
to convey a String
. We recommend using JSON or an equivalent structured format in this container. Our system does not interfere with the information you include in this container, it just handles the proper triggering and delivery of this data to your Application.
Typical actions falling under this category are:
- In-App redirections
- calling webservices
- calling interactivity platforms such as IFTTT
We provide sample schemes for enabling any of these services. You may also define your own schemes and interpret them accordingly in your app.
C - Action Scheduling and Groups:
You can define rules controlling when any Action is allowed to be triggered or re-triggered:
- to handle this from a Time and Date perspective, use our
Scheduling rules
, - to handle avoidance of too many Actions triggering on given periods of time, use our
Groups
andAction
re-triggering rules
.
Action Scheduling:
Scheduling defines when an Action is allowed to be triggered in terms of Date and Time.
When an underlying proximity trigger occurs, an Action will actually be triggered only if the current Date and Time match with an Active Period
of the Action
The most basic Scheduling rule
defines a Validity Period
which has:
- a
Start Date
- an
End Date
- active
WeekDays
- optionally, active
Hours
for each given day.
Note: For a given
Action
, multipleValidity Periods
can be defined
You may also define Exception Periods
in order to either enable or disable the action during specific periods, on specific days or specific hours.
Groups and re-triggering rules:
These rules allow you to control when an action is allowed to trigger, based on previous occurrences of itself or of other related Actions
Action re-triggering period:
At the individual Action level, the Re-triggering period
is the duration during which an action is inhibited after being triggered. When set to zero, the re-triggering period
check is removed, the action may trigger without any limitation.
Action
Re-triggering Period
example:
An Action is executed a first time. A Trigger for this Action happens a short while after, but the re-triggering period has not yet expired. The Action is therefore not executed again. If a third Trigger happens right after the re-triggering period expires, the Action is then executed.
Group triggering rules:
You can define Action Groups
and link multiple Actions to them.
An Action Group has its own re-triggering rules with the following settings:
Maximum number of occurences
in the groupRe-triggering period
of the group.
Group level rules apply on top of individual Action re-triggering. They ensure that no more than Maximum number of occurences
Action from the group are triggered in any given Re-triggering period
of time.
Action
Group triggering rules
example: Action A and Action B belong to the same GroupGroup rules are:
- Re-triggering period = 4 minutes
- Maximum number of occurrences = 2
When two actions have been executed, a 3rd one is not executed while the two previous ones are less than 4 minutes old.
If another Action is triggered slightly later, only one action already occurred in the previous 4 minutes: the new Action can be executed:
D - Action Triggers:
Action Triggers define on which proximity criteria an Action needs to be triggered.
An Action may have multiple Action Triggers
, which run independantly from each other.
Note: Although multiple triggers may be associated to a given Action, previously explicited Scheduling and Re-triggering rules apply at the Action level, whatever the underlying triggers are.
Event types:
iBeacon® Region event:
As per Apple’s iOS documentation, iBeacon Regions are groups of iBeacons. depending on configuration, these Regions may cover one unique iBeacon or thousands of iBeacons.
iBeacon Region events happen:
-
IN
whenever a device first enters the coverage of any iBeacon belonging to a given iBeacon Region. This event is typically triggered a few seconds after entering the region, if not immediately most of the time. -
OUT
: whenever a device leaves to coverage of any iBeacon belonging to the region. This event is typically triggered 30 seconds after leaving the region area.
iBeacon Region example: Multiple iBeacons belong to the same Region. IN and OUT events are triggered when the Region coverage area is entered or left.
iBeacon Region events have the capability of waking an iOS application up, even when it has been killed from the multi-task menu.
Using this kind of event is therefore very well suited for “Application wake-up” use cases.
Notes:
iBeacon Region triggering distance: Region events are provided by iOS and there is no way to ask the region to trigger at a given distance or signal power. In order to physically reduce the area of a region, the actual power of iBeacons needs to be reduced accordingly. For flexible & programmable proximity interactions, the following
iBeacon Proximity event
is well suited and recommended.
iBeacon® Proximity event:
iBeacon Proximity is based on iBeacon “ranging”, which estimates the signal power and thus the distance between a device and surrounding iBeacons.
The principle of iBeacon Proximity event is to check if the user’s device is within a given distance of one specific iBeacon. The distances at which an iBeacon Proximity event occurs are called Proximity Thresholds
Insiteo’s proximity interaction framework provides you with full flexiblity in defining Proximity Thresholds
There are predefined proximity thresholds:
Far
: 40 metersNear
: 2.5 metersImmediate
: 0.25 meters
and you can define your own custom thresholds such as:
Not so Far
: 25 metersNot so Near
: 10 meters
As for the iBeacon Region event
, iBeacon Proximity events
can be used when entering (IN
) or leaving (OUT
) a proximity area.
iBeacon Proximity example: The picture below illustrates iBeacon Proximity Events, when the
In
event is set toNear
and theOut
event set toFar
Notes:
iBeacon Ranging: iBeacon Proximity is only available when a device has entered a Region. Proper Regions covering all the beacons used for proximity triggering must therefore be declared. As mentioned above, one single iBeacon Region can cover thousands (and even hundreds of thousand iBeacons), in most cases one single Region is sufficient to ensure all your iBeacons are available for iBeacon Proximity triggering.
Ranging availability in Foreground and Background: To be described
Geofencing Region event:
Geofences are circular areas defined their center’s GPS coordinates and a radius. The smartphone OS is able to detect whenever the device enters or leaves this area. Geofencing areas are mostly suitable for medium to low accuracy triggers (from a few 100 to a few 1000 of meters)
Triggering rules:
For any given Event type, the following Triggering rules
apply:
Number of occurrences
: defines how many occurences of the event are required to triggerTriggering Period
: defines in which maximum period of time the events need to happenEvent filtering Period
: defines a “short-term” period during which not more than one event is actually taken into account. Two or multiple events within a givenEvent filtering Period
only count as one event occurence.
When the Number of occurrences
is reached during a given Triggering Period
, the Action Trigger
is executed and results in the Action
being taken (if it is valid from a Scheduling and re-triggering rules perspective)
Trigger reset:
Whenever an Action Trigger
is executed after its conditions are met, it is reset: the count of event occurrences is brought back to zero. From that point, the trigger is available to take new input events and be executed another time if conditions are met.
Triggering rule examples:
The examples below show how triggering rules affect the behaviour of Action triggering. In the three described cases, the sequence of Events is exactly the same (Pink triangles on the timeline) With different sets of triggering rules, different seqeuences of actions are obtained for the same event inputs.
Number of occurrences and event count reset:
Number of occurrences
= 3Triggering Period
= 4 minutes- No other rule or restriction applies.
When the 3rd event happens, since all 3 occured in less than 4 minutes, the
Action
is triggered a first time. The event counter is also reset. Subsequent events are counted again and the action triggers another time.
Event filtering Period:
Number of occurrences
= 3Triggering Period
= 4 minutesEvent filtering Period
= 1 minute
Here, the
Event filtering Period
inhibits some events which happen too soon after a previous one. As a consequence, the Action is taken later, when three valid Event have occured.
Triggering Period:
Number of occurrences
= 3Triggering Period
= 3 minutesEvent filtering Period
= 1 minute
In this example, the Triggering Period is reduced down to 3 minutes. The 3rd valid Event happens slightly too late, at this stage there are still only 2 valid event in the last 3 minutes. The action is therefore not initiated. A 4th occurrence of the trigger happens later-on, at a time when there were still 2 valid Events in the last 3 minutes: the Event counter reaches 3 and the Action is initiated.
E - Architecture overview:
The diagram below illustrates our platform’s architecture and how it integrates to your own system.