8. moosecon - @KLAJLI & @ARDIRI
Application Guidelines
application lifecycle
Start
• respond correctly
to lifecycle events
Normal Hidden
(Active) (Inactive)
• failure to do so can:
Thumbnail • drain battery
(Active/Inactive)
• interfere with other apps
Exit
Application Guidelines
applications can integrate with the operating system and
other core applications by using:
• BBM Framework,
• Share Framework,
• PIM APIs,
• Universal Search, Integrated Social Beautiful
• Push Service,
• Payment Service,
• Advertisement Service
• Balance
BlackBerry 8
9. moosecon - @KLAJLI & @ARDIRI
Application Guidelines
applications can use the Invocation Framework to minimize
“reinventing the wheel” and improve the user’s flow:
• cards and content viewers
• launching core and 3rd party Apps
• registering URIs and MIME types
Bound Invocation
I want Dr. Doc to
open this .doc
file.
I can
open .doc
files
Dr. Doc
Invocation Framework
BlackBerry 9
10. moosecon - @KLAJLI & @ARDIRI
Unbound Invocation
I can
open .doc
I need to open files
this .doc file.
Anyone?
I can
open .doc
files
Invocation Framework I can
open .png
files
Cards
! embeds a screen from target
! instead of launching the full app
! no App Grid presence
! supports peeking
! a leap ahead of the competition
! BlackBerry 10 Flow at its best!
! invoked in the same way!
BlackBerry 10
11. moosecon - @KLAJLI & @ARDIRI
Card Styles
! Three styles
! Composer
! Previewer
! Picker
! Determines
! Peek behavior
! Transition style
Application Packaging
• cannot directly access files of
Sandbox other applications
• use the development mode to
data see your application sandbox
logs • only place user visible files
(across device) in shared area
tmp
app Application Installation
shared User Shared
BlackBerry 11
12. moosecon - @KLAJLI & @ARDIRI
Application need to request resource access in the bar-
descriptor.xml file
Application Signing
BAR
Request Half Signed Sign with
RIM Signature Developer Certificate
BAR
Signed
BAR
BlackBerry 12
13. moosecon - @KLAJLI & @ARDIRI
BlackBerry 10 Foundations
Platform APIs & Core Packages
Android Native Web AIR
Player Runtime Runtime Runtime
Application BBM™ Application
Infrastructure Payment Advertising Push Data Notification Phone Platform
Service
Invocation Share Calendar Contacts Messages Tasks …
Configuration Cascades Search Config Balance
Backup /
Lifecycle Utilities i18n Instrument n …
Restore
System Service Authenticatio
Navigator Installer Launcher Multimedia SQLite NFC
n
Window
WebKit Protocols Network DRM Crypto …
Manager
OS Memory Process Power Device
IPC File System …
Management Management Management Drivers
NATIVE SDK
BlackBerry 13
15. moosecon - @KLAJLI & @ARDIRI
Native SDK
BlackBerry Platform Services
the BlackBerry Platform Services (BPS) library provides an
application with a single consistent interface to a number of
different services during the execution of the application.
• universal event management
• user interaction/navigator
• input/output (sensors, audio, LED, screen, multimedia)
• device information, locale and payment services
• network status and geo-location
Native SDK
BlackBerry Platform Services
bps_event_t *event_bps;!
event_bps = NULL;!
bps_get_event(&event_bps, timeout); // -1, forever!
if (event_bps != NULL)!
{!
event_domain = bps_event_get_domain(event_bps);!
if (event_domain == xxx)!
{!
// request event information within the domain!
}!
}!
BlackBerry 15
16. moosecon - @KLAJLI & @ARDIRI
Native SDK
BlackBerry Platform Services
handling {service} events
!{service}_request_events({param}); // request events
then capture the appropriate {service} events!
event_domain = bps_event_get_domain(event_bps);!
if (event_domain == {service}_get_domain())!
{!
// handle the {service} event
Native SDK
Open Industry Standards
BlackBerry 16
17. moosecon - @KLAJLI & @ARDIRI
Native SDK
Open Source Support
CASCADES SDK
BlackBerry 17
18. moosecon - @KLAJLI & @ARDIRI
Cascades SDK
OSS & Developer Experience
Mature C++ application framework
Good APIs
Signals and Slots
Many help classes
QML
QtGui Cascades
BlackBerry 18
23. moosecon - @KLAJLI & @ARDIRI
S('1*-'F+T&"@A+R6#'.$+-'+BUU+
QObject::connect(bubble,SIGNAL touched(bb::cascades::TouchEvent *t)
(touch(bb::cascades::TouchEvent*)) {
this,SLOT if (t->isDown()) {
(touched(bb::cascades::TouchEvent*)) bubble->setScale(2f);
); bubble->setRotation(45.0f);
}
else if (t->isUp()) {
bubble->setScale(1f);
bubble->setRotation(0.0f);
}
}
}
C++ QML
You can choose!
No difference between UI created in QML or C++
They can be combined
Typically, UI in QML and business logic in C++
QML supports JavaScript for signal handling
BlackBerry 23
24. moosecon - @KLAJLI & @ARDIRI
>'-0(%&'$+
Any Cascades UI element can be animated
Animations are running on the engine thread
Remember the client server setup?
Explicit & Implicit animations:
translation, rotation, scale, opacity, …
Core Controls
BlackBerry 24