在当今的移动应用市场中,用户对无缝体验的需求日益增长。黑莓信使(BBM)作为黑莓手机的一项核心功能,提供了一个强大的平台,使开发者能够将他们的应用与BBM集成,从而提升用户体验并增加应用的传播机会。本文将探讨如何将原生应用与BBM集成,以及如何通过调用框架将BBM的卡片功能引入应用中。
在黑莓10系统中,"卡片"是一种可以在应用内部显示的另一个应用的屏幕,它像应用中的一个屏幕一样运作。这种设计允许用户在不切换应用的情况下,享受到流畅的用户体验。
本文中使用的代码示例是使用QML编写的,但请注意,也可以从C++、黑莓WebWorks™和Adobe® AIR®中使用这些调用特性。
下面的截图展示了可以在应用菜单中使用的动作,以调用BBM。"BBM调用"文本代表应用屏幕(实际上显示的是BBM调用示例)。每个BBM卡片都将显示在其上方。用户可以随时查看应用屏幕或完全关闭卡片,返回到应用屏幕。
将逐一查看这些卡片,了解它们是如何被调用的,以及一旦被调用后的外观。
以下是如何启动BBM聊天的代码示例。聊天窗口将以卡片的形式流入应用。在上面的例子中,使用了单个PIN。如果省略了URI参数,用户将被提示从他们的BBM联系人列表中选择一个联系人来加入聊天会话。如果与该联系人已经存在聊天会话,它将显示以前的信息。
<InvokeActionItem>
<title>
开始BBM聊天
</title>
<query>
<invokeActionId>
bb.action.BBMCHAT
</invokeActionId>
<uri>
pin:2100000a
</uri>
</query>
</InvokeActionItem>
可以提示用户将他们的BBM头像图片更改为应用指定的图片。这将触发一个预览图片的卡片,并允许用户裁剪或缩放。一旦用户对他们的选择感到满意,他们点击保存以更新他们的BBM头像。
<InvokeActionItem>
<title>
设置BBM头像图片
</title>
<query>
<invokeTargetId>
sys.bbm.imagehandler
</invokeTargetId>
<invokeActionId>
bb.action.SET
</invokeActionId>
<uri>
file:///path/to/the/file.png
</uri>
</query>
</InvokeActionItem>
如果知道尚未使用黑莓信使的联系人的黑莓PIN,可以使用上面显示的BlackBerry.action.INVITEBBM调用动作来邀请他们加入BBM。然后,用户可以在发送消息之前为他们的联系人编写一条个性化消息。
<InvokeActionItem>
<title>
邀请加入BBM
</title>
<query>
<invokeActionId>
bb.action.INVITEBBM
</invokeActionId>
<uri>
pin:2100000A
</uri>
</query>
</InvokeActionItem>
通过BBM分享文本使应用能够启动一个聊天会话,并在数据部分指定的文本填充消息输入字段。就像上面开始BBM聊天会话一样,如果存在以前的聊天会话,将显示消息历史。
<InvokeActionItem>
<title>
通过BBM分享文本
</title>
<query>
<mimeType>
text/plain
</mimeType>
<invokeTargetId>
sys.bbm.sharehandler
</invokeTargetId>
<invokeActionId>
bb.action.SHARE
</invokeActionId>
<data>
This is some text to share.
</data>
</query>
</InvokeActionItem>
通过BBM分享图片的工作方式与分享文本几乎相同,只是指定了一个指向图片文件的URI。它带来了一个聊天卡片,消息已经编写好并准备好发送,图片已经附加。
<InvokeActionItem>
<title>
通过BBM分享图片
</title>
<query>
<invokeTargetId>
sys.bbm.sharehandler
</invokeTargetId>
<invokeActionId>
bb.action.SHARE
</invokeActionId>
<uri>
file:///path/to/image/file.png
</uri>
</query>
</InvokeActionItem>
为了简单起见,上面的QML代码示例使用了硬编码的数据和URI值。然而,在实际应用中,会希望使用基于应用内变量的动态值。可以使用onTriggered方法来实现这一点。
<InvokeActionItem>
<title>
通过BBM分享文本
</title>
<query>
<mimeType>
text/plain
</mimeType>
<invokeTargetId>
sys.bbm.sharehandler
</invokeTargetId>
<invokeActionId>
bb.action.SHARE
</invokeActionId>
<data>
This is some text to share.
</data>
</query>
<onTriggered>
{
data = "Some new text"
}
</onTriggered>
</InvokeActionItem>