Recent changes made to digital signage platform.
accessControlProcessing=disableGroups
- Only show items the user has direct access to.accessControlProcessing=disableGroupRecursion
- Only show items the user has direct access to and items within groups the user has direct access to.accessControlProcessing=full
(default) - Show all items the user has direct access to, items within groups the user has direct access to and indirect access via child groups.conditionScope=extend
dataScope=extend
canFinishEarly=true
.a=b
showSignageNodeErrorReport=true
in user or cloud data.audio_loudness_level
.timePoint
in a stack (only used by glplayer)X-AsynchronousImport: true
. Import response will return OK
immediately and import in the background.updateSequences=true
.?updateSequences=true
to REST API query.reencodeOption=advanced
to make custom video re-encoding options available./debug/download-queue/[SCREEN-ID]
endpoint to test new download priorities and conditions.thumb=true
in resource data. Previously, image resources less than 100 pixels were regarded as thumbnails.live-image-
protocol prefix
for JPEG/MJPEG image rendering.X-Frame-Options: SAMEORIGIN
from preview to support
embedding into a web page using an iframe.liveimage-http://
and
liveimage-https://
.standbyCondition
configured
(which periodically sleeps and restarts by design).extendedOfflineThreshold
to customise threshold for when screens are hidden from screens tab.backupServerUser=true
is added to screen data.
This can be useful for detecting when networks have the primary server blocked./analytics
is not required to see it.libraryItem.
, sequence.
or
screen.
to the fields
parameter of the API request. For example:
...&fields=time,itemId,sequenceId,screenId,screen.customFieldName
?autoGrantGroupAccessControls=false
can be added to the request.test=true
into group data./auth?email=me@mydomain.com&password=mypassword
. This will create a session, add a cookie
and redirect to the admin interface. This must be performed over a secure connection and has security implications (not recommended).random
value reset after an item is displayed if data
reused.itemId
is automatically allocated and added to items when report=true
is set.use_cipher_signature=true
set.
Video format preference order 37, 22, 18.adSuitable == false
. A3 assigned
items will not be preemptively downloaded by devices until adSuitable == true
.loaderVersion >= 15.0
.adSuitable
and adEnabled
via toggle switches.customId
that is already used in a sequence no longer merges items to use the same itemId
for reporting.
This means a customId
functions more like a tag where reporting on a customId
can
return multiple unique items. Logic for RSS sequences differs because the RSS GUID is used as
a unique identifier and is used to prevent creating different reporting items when RSS feeds update.additionalReadOnlyData
in cloud configuration to mark custom data fields as read-only.
For example additionalReadOnlyData=LicenceID
in active cloud configuration would prevent users changing the LicenceID field in item data.
usedBy
field which was incorrectly maintained in stacked sequences.X-MediaProcessing=noprocess
- Disable all media processingX-MediaProcessing=norescaleimages
- Disable generation of additional rescaled imagesX-MediaProcessing=novideoimages
- Disable generation of preview images for videosreport=false
set in screen data.Strict-Transport-Security
header. The following data is needed in cloud options:
strictTransportSecurity=true
strictTransportSecurityMaxAge=86400
.
X-Frame-Options: sameorigin
to admin interface page to prevent wrapping in iframe..exe
and .js
.userIdentifier=username
null
BLOB uploader. This is to support additional addresses for already populated blobstores.events
to healthcheck API response.sequenceIdOverride
to enable quick override of a screens sequenceId
without losing
configured setting of sequenceId
.
This will be used to show emergency items and to temporarily disable non-paying customers.maxBitrate
to configure threshold for displaying bitrate warning.maxResults
aborts server-side object loading except when filtering.twoFactor=true
in cloud.showAddItemOption=false
to hide the add item option from sequences.showEditOption=false
to disable stack item double clicking and dragging.collectGps=true
in screen data)groupRecursion=false
to user data will disable group recursion and limit the visible
depth to the first layer of access controls. I.e. Items the user has direct access to and items
contained within groups the user have direct access to.type
field to REST API responses to simplify object deserialization using Jackson annotations.actionRecordsForApi=false
to user data.
/api/group-screen-data/{group-name}
to support updating data of
all screens in a group with a single API call.url
parameter to support cancelling.showRssPreviewOption showRssPreviewOption showExpireOptions showFindSequenceOption showCopyOption showRemoveOptionshowEditOption
to support further customisation of the admin interface.serverImport
, to content builder definition to support content builders that return a
URL that should be displayed in a WebView rather than importing binary data server side. This is for live HTML5 content.showBillingStatus=true
in cloud config.filter
can take a predicate which
will be applied to a list of objects. For example &filter=modifiedMillis>1536839304634
.
Please note, the filter value must be URL encoded.backend
parameter and use data warehouse V2 regardless.backend=warehouseV2
ASAP.showReports=false
now also prevents using the API for reporting.durationMillis
not set if it matches a resource duration or the default (10 seconds).hardwareBootMillis
.hardwareBootMillis
for significant jumps backwards in time. When a duplicate is detected,
hardwareBootMillisDebug=duplicate
is added to screen data.groupId
filter behaviour in data warehouse v2 backend to match v1.collectGps=true
.modifiedMillis
in resource data).X-MediaProcessing=noprocess
added to upload requests disables automatic media processing. Note: This
advanced option requires metadata to be sent in the data of the pending resource, for example image width
and height
.text/txt
is now fixed by using supplied file extension.collectGps=true
required in screen data)blobstore
field to identify uploads to multiple blobstores.fields
to select what fields to include in the report.collectGps=true
set in screen data to support moving screens.seqeunceId
field in legacy database for display reports and collected data reports is no longer used.
The itemId
is now used to look up the ItemInfo metadata which includes the sequenceId
.
This results in more compact storage in the legacy database and more consistent results when comparing data with the new data warehouse.
Note, if an itemId is duplicated across multiple sequences then the wrong sequence may be referenced. This regresses change made in 5.3.0.sequenceId
from StackItem.sequenceId
sent from players in display reports is ignored and new players will not send it.data.url
. This should resolve replication
issues with URLs over 512 characters and previous issues with 1024 character URLs.sequenceId
in cloud config screen defaults.
Note: desiredPlayer
will also need to be set to start playback.fullId
and automatically reapplied when the DataSource is
saved or accessed via DataSourceDao. This fixes the MongoDB 1024 byte key length limitation.templateGroupIds
and widgetGroupIds
set in data of cloud config or user config. This facilitates having multiple groups of templates and widgets for different
users./blob-extract/
downloads blob and serves unzipped files for previewing zipped web pages.usedBy
to sequences for performing dependency lookups.
usedBy
field.usedBy
is populated by upper sequences referring to them.usedBy
is populated by outer sequences referring to them.usedBy
checked and removed when sequence refreshed./ad/group-name
.showHomeServiceStatus
.serverAddress
.showDownloadButton
, showMultipleSelectButton
and showSearchButton
to support hiding buttons and functionality from users and cloud configs.groupId
and groupName
query parameters to REST API to filter list results.beaconConfig=blepw
to screen data. Requires Android 5.1 and hardware support.by REST API
.time.between("19:00", "21:00", "Europe/London")
updateCondition
no longer overrides playerCommsPeriod
when performing player comms.libraryItemId
is not populated in stack items when dragging from library into sequence.User-Agent: TargetR-Stacks/version
labelTextSize labelColor labelBackgroundColor labelTransitionDuration labelMaxLines
.maxResults=1000
in user data to revert.pagesSize=10
in user data to revert.syncBroadcast=false
in screen data. This can help support larger numbers of synchronised screens without unexpected resynchronisations.webContentsDebuggingEnabled=true
to screen data./trigger?name=trigger-name
.DigitalSignage.getData(..)
function.getData(...)
JavaScript.vastDebug=comms
for debugging communications made by VAST sequencesvastPost
for VAST requests requiring a custom request body.downloadPriority
and downloadCondition
to provide more
control over what order and when resources are downloaded.[country]
, [timeZone]
etcvastMaxAge
(milliseconds to re-use). Default is 10 minutes.http://
in the image address with hls-http://
or dash-http://
http://
in the image address with
liveimage-http://
liveimage-http://username:password@192.168.0.10/mjpg/video.mjpg
cleanupThreshold
as it was known for causing download loops
when items were scheduled to display in the future. Replaced with blobstoreMaxSize
which is the maximum size in bytes that can be used for storing blobs.putScreenData(name, value)
for inserting new data into the current state.
This screen data will be returned to the server during the regular communication cycle.getPlayerTime()
returns the internal player time in milliseconds since epoch.
This time is updated based on server time and is typically more accurate than the system clock
(especially if NTP is blocked or disabled).
getData()
function will also search main sequence data if requested
data is not found in screen data, current item data or current sequence data.systemCpuTemp
, systemDisplayMode
and systemLoadAverage
to screen data.
Data taken from /sys/class/thermal/thermal_zone0/temp
,
/sys/devices/virtual/display/HDMI/mode")
and /proc/loadavg
respectively. Please note the availability of this information is dependent on Android version and hardware
configuration.
localWebServerPort=9090
/log
/blobstore/
/blobstore/[blob-id]
/player-state
blackCondition=true
.cleanupThreshold
.
For example, cleanupThreshold=0.8
performs cleanup when a blobstore location
exceeds 80% of the available storage. Cleanup will delete unused, cached BLOBs.text/plain
)webviewReuse=20
)report=false
set in screen data.lastDisplayRecordMillis
ignored.fullscreenWarningText
to display full screen warning.Uri
to extra STREAM intent.camera://0
or camera://1
Referer
header set to
the cloud config address and User-Agent
header set to player version and android version. This
will be useful for stats and fault finding.~screenId
with the screen ID of the active player:
http://www.example.com/video?screenId=~screenId
.blobstoreInternal
, blobstoreExternal
and blobstoreDir
.collectGps=true
the GPS location is stored periodically on the device. This stored GPS location
is then reused following a device restart until an accurate GPS fix is obtained.collectGps=true
is set. This
is no longer necessary as the GPS coordinates are added to the display report.requiredGpsAccuracy
to support setting the accuracy required for GPS to be updated.
Default is 50 meters.hdmi://zidoo
.gpsInside(lat1,lng1,lat1,lng2,lat1,lng2)
reportOptions=verifyClock
to prevent storing reporting records
and collecting data if the clock has not be verified as correct.collectGps=true
one duplicate record will be missing GPS.hdmiState
to screen data to report HDMI connection status.collectGps=true
added to screen data.
Note: when downgrading, previously saved display records containing GPS data will be lost.getScreenData(...)
to JavaScript interface.rs232outputAtStart=...
to screen data.hardwareBootMillis
. This will allow
a app restart to be differentiated from a device restart.sequenceId
field in display reports and collected data reports is no longer used. The
sequenceId
is now derived using the itemId
and ItemInfo metadata. This means report
storage and sending is more efficient.sequenceId
from StackItem.report=false
to screen data. This option will disable reporting entirely.conditionScope=extend
to outer sequence data to enable.dataScope=extend
to outer sequence data to enable.canFinishEarly=true
to displayable item or inner sequence to enable./reboot
(Rooted device required)refererOverride
.webviewErrorPage=black.html
in screen data.lastServerResponseMillis + 60000 > time.millis()
in condition.eventScope=mainSequence
. This scope allows events in the main sequence to be evaluated when displaying an inner sequence. This helps build a top level schedule.vastMediaUrl
populated with the advert media URL.blobstoreDir
ends with /blobstore the directory is automatically created.blobstoreDir
is only cleared by clear data command if it matches paths defined in DS Loader 15.3.vastImpressionAddressAppend
which will append the value to the end of impression addresses defined within a VAST response when specified in the sequence data.syncBroadcast=false
in screen data. This can help support larger numbers of synchronised screens without unexpected resynchronisations.webContentsDebuggingEnabled=true
to screen data./trigger?name=trigger-name
.getData(...)
JavaScript.vastDebug=comms
which can be added to screen data for debugging communications made by VAST sequences.vastPost
for VAST requests requiring a custom request body.downloadPriority
and downloadCondition
to provide more
control over what order and when resources are downloaded.[country]
, [timeZone]
etcvastMaxAge
(milliseconds to re-use). Default is 10 minutes.cleanupThreshold
as it was known for causing download loops
when items were scheduled to display in the future. Replaced with blobstoreMaxSize
which is the maximum size in bytes that can be used for storing blobs.liveimage-http://username:password@192.168.0.10/mjpg/video.mjpg
http://
in the image address with
liveimage-http://
putPlayerData(name, value)
for inserting new data into the current state.
This screen data will be returned to the server during the regular communication cycle.getPlayerTime()
returns the internal player time in milliseconds since epoch.
This time is updated based on server time and is typically more accurate than the system clock
(especially if NTP is blocked or disabled).
getData()
function will also search main sequence data if requested
data is not found in screen data, current item data or current sequence data.systemCpuTemp
, systemDisplayMode
and systemLoadAverage
to screen data.
Data taken from /sys/class/thermal/thermal_zone0/temp
,
/sys/devices/virtual/display/HDMI/mode")
and /proc/loadavg
respectively. Please note the availability of this information is dependent on Android version and hardware
configuration.
localWebServerPort=9090
/log
/blobstore/
/blobstore/[blob-id]
/player-state
blackCondition=true
.cleanupThreshold
.
For example, cleanupThreshold=0.8
performs cleanup when a blobstore location
exceeds 80% of the available storage. Cleanup will delete unused, cached BLOBs.text/plain
)webviewReuse=20
)report=false
set in screen data.lastDisplayRecordMillis
ignored.fullscreenWarningText
to display full screen warning.Uri
to extra STREAM intent.camera://0
or camera://1
Referer
header set to
the cloud config address and User-Agent
header set to player version and android version. This
will be useful for stats and fault finding.corruptionCheckTime
and before corruptionCheckTime
plus 10 minutes.gpsFixMillis
in screen data. This can be used in conditions to confirm GPS is working.blobDataCorruption
in screen data.
If blobDataCorruption > 0
it is likely file storage on the local device is faulty.
Please note, this value will also be incremented if a proxy manipulates downloaded data.
Some mobile data providers re-encode images and videos to make them smaller. The player regards this as a Man In The Middle (MITM) attack
and will delete the data and increment blobDataCorruption
.
Default periodic check time is 03:00 (based on screen TimeZone). To change set corruptionCheckTime
for example corruptionCheckTime=07:00
to disable, set corruptionCheckTime=disable
. Please be aware that is does not affect existing verification checking
that occurs immediately after downloads complete.~screenId
with the screen ID of the active player:
http://www.example.com/video?screenId=~screenId
.blobstoreInternal
and blobstoreExternal
)
could still be used even if they are disabled.blobstoreInternal
, blobstoreExternal
and blobstoreDir
.collectGps=true
the GPS location is stored periodically on the device. This stored GPS location
is then reused following a device restart until an accurate GPS fix is obtained.collectGps=true
set,
gpsLatitude
and gpsLongitude
stored in screen data is added to display report records
instead.collectGps=true
is set. This
is no longer necessary as the GPS coordinates are added to the display report.requiredGpsAccuracy
to support setting the accuracy required for GPS to be updated.
Default is 50 meters.hdmi://zidoo
.gpsInside(lat1,lng1,lat1,lng2,lat1,lng2)
reportOptions=verifyClock
to prevent storing reporting records
and collecting data if the clock has not be verified as correct.collectGps=true
one duplicate record will be missing GPS.hdmiState
to screen data to report HDMI connection status.collectGps=true
added to screen data.
Note: when downgrading, previously saved display records containing GPS data will be lost.getScreenData(...)
to JavaScript interface.rs232outputAtStart=...
added to screen data.hardwareBootMillis
. This will allow
a app restart to be differentiated from a device restart.sequenceId
from StackItem.sequenceId
field in display reports and collected data reports is no longer used. The
sequenceId
is now derived using the itemId
and ItemInfo metadata. This means report
storage and sending is more efficient.report=false
to screen data. This option will disable reporting entirely.yOverride
.beaconConfig=blepw
to screen data. Requires Android 5.1 and hardware support.rs232outputFormat=hex
.autoStart
setting can be applied to screen data. autoStart=false
will prevent ds-loader and the player starting after a reboot.
The default can also be added to the cloud config and will be complied into ds-loader.apkinternetBlobsCondition
and intranetBlobsCondition
now correctly evaluated when updateCondition=false
internetBlobsCondition
and intranetBlobsCondition
is updateCondition
. This change replaces the 10 minute delay
used in android-player-11.6 to detect when updates are disabled.stretch=true
in items)rs232config=38400,8,1,none
(This example will set baud to 38400, bits to 8, stop bits to 1 with no parity)rs232output=avi=1
(This example will send avi=1
to the serial output)blobDownloadConcurrencyMax=2
blobUploadConcurrencyMax=2
blobTransferRateMin=10240
blobTransferRateMax=104857600
blobDataDownloadedRate
blobDataSharedRate
showStatusIcon=true
.collectGps=true
in screen data.distanceMeters(latitude,longitude)
and distanceYards(latitude,longitude)
.syncVideoMode=2
.rootSequence.offset(-1).label
returns label of previous item.rootSequence.label
returns label of current item.rootSequence.offset(1).label
returns label of next item.rootSequence.offset(2).label
returns label of item after next.language=es
.headline
from a sequence with the label videos
can be accessed using DigitalSignage.getData("videos.headline");
offsetMillis
in item data.
offsetMillis
must be set to the number of milliseconds from the start of the video.
Please note that seek accuracy varies greatly between devices and video types.~dataName
is used.stackNumber
to data for use in conditions.DigitalSignageTriggerCallback(data);
.
This makes it possible to have a direct communication route into a interactive web page running on a device. Ideal for games where a smartphone acts as a controller.background=#FFFFFF
in screen data to enable and videoBlankerPeriod
to change the period at the beginning and end of playback to mask.webViewReuse=0
.blobTransferRateMin
. Connections are terminated if transfer rate falls below this value. Alternate sources will be used.blobTransferRateMax
. Transfer is paused when rate exceeded. Useful for devices that can not download at high transfer rate and play HD videos at the same time.blackCondition
not functioning.timeZoneOverride
in screen data.xOverride, yOverride, widthOverride, heightOverride
must follow convention of Override
being a suffix not prefix.syncOffset
and syncVideoOffset
added to make small changes when hardware differs.ActivityManager.getMemoryClass()
instead of Runtime.maxMemory()
to
estimate how much memory to use for caching rendered bitmaps. This improves stability on devices that incorrectly report maximum memory.
Can be overridden by setting maxBitmapCacheSize
in screen data.testStartCount
and testEndCount
to help detect unexpected mid testing reboots.testRunTime
after the long test and is reloaded after reboot.testStatus
testFailReason
testRunTime
testCpuMegacalcsMin
testRamWriteRateMin
testRamReadRateMin
testRamWriteMax
testStorageWriteRateMin
testStorageReadRateMin
testStorageWriteMax
testStorageExtWriteRateMin
testStorageExtReadRateMin
testStorageExtWriteMax
wifiRssi
wifiSpeed
cpuMegacalcs
ramWriteRate
ramReadRate
storageWriteRate
storageWriteExtRate
storageWriteMax
storageWriteExtMax
storageReadRate
storageReadExtRate
testVideoPlayback
wifiRssi
Build.MODEL
is CE220
, CE420
or CE440
./mnt/external_sd/blobstore
/mnt/usb_storage/USB_DISK0/udisk0/blobstore
update.zip
must contain a file named update.sh
containing shell commands for how to apply the update.screenId
in User-Agent
and serverAddress
in Referrer
)cleartextTrafficPermitted=true
to remove restrictions.autoStart
from default.properties. This allows the default autoStart
setting to be configured
in the cloud config and compiled into the custom APK.restartTime
can now be overridden by timeZoneOverride
.