Updated: August 12, 2020
In preparation for coming support of Android display themes, you should ensure that your capsule has specific icons and images that account for these themes. Currently, you should account for the light theme and dark theme.
Some images in your capsule, particularly icons, might not be visible or legible when set against a different background in an alternate theme. You can specify alternate images for the light theme by using the light-theme
key, which is available in most View's components that let you specify an image by URL. There is also a corresponding dark-theme
key that can be used if the image does not have enough contrast for the dark theme.
To maintain backwards compatibility, we're also supporting the current theme for older devices and other non-mobile device types.
Examples
url (icon-default.jpg) {
light-theme (icon-light.jpg)
}
url (icon-default.jpg) {
dark-theme (icon-dark.jpg)
}
A new Black
background image color is now available to create additional contrast to your images in image-background-color
for images in cards or background-color
for standalone images.
Before submitting your capsule, if you have hints with constraints, you must also provide at least 3 working uncategorized
, visible (unconstrained) hints for each store country and device to the Marketplace. If the hints do not work, your capsule will be rejected.
In summary, you need one of the following:
For details, see Preparing for Release.
You can now opt out of capsule lock during specific result moments with the capsule-lock
key in that particular result view, which overrides the result-view-capsule-lock
flag in your runtime version.
Keep in mind that, if you do opt out of capsule lock, conversation drivers will appear on the result view page, but they might not behave as expected. This is true even if the device does not support capsule lock.
We've introduced two new EL node evaluation functions:
typeOf(node)
: Returns the type of the node. The return value is the fully qualified node name: in a capsule with a capsule ID of example.shoe
, the Accessory
model has a fully qualified name of example.shoe.Accessory
.
cast(node, type)
, node.cast(type)
: Returns a copy of the node cast to the specified type.
For more information, learn about Node Evaluation Functions.
You can now define a default-value
for a primitive-type property in structures. However, you cannot define a default value for a structure-type property. If defined and if a value cannot be found for that property, then the default value will be used. Structures inherit any default values defined for properties from a parent structure.
structure (Struct) {
property (int) {
type (viv.core.Integer)
min (Required)
default-value (5)
}
}
You now should declare which library permissions are needed with the autocomplete component, to ensure that component works correctly. Otherwise, your users get prompted multiple times. Adding library permissions in this situation ensures users are prompted for all permissions only once.
Keep in mind that, if you are declaring library permissions in an autocomplete component, you must declare it both in the capsule.bxb
file and in the permissions
block in auto-complete
.
Examples
...
auto-complete {
…
source {
collect-with (…) { … }
label (…)
where-each (…) { … }
permissions {
library-permission (self:profile)
library-permission (contact:contacts)
}
}
}