×
Namespaces

Variants
Actions
(Difference between revisions)

Messaging API 文档

From Nokia Developer Wiki
Jump to: navigation, search
flycarl (Talk | contribs)
hamishwillee (Talk | contribs)
m (Text replace - "<code cpp>" to "<code cpp-qt>")
 
(19 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{ArticleMetaData
 +
|sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] -->
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') -->
 +
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) -->
 +
|platform= <!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later -->
 +
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) -->
 +
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->
 +
|signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 +
|capabilities=<!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. -->
 +
|keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase -->
 +
|id= <!-- Article Id (Knowledge base articles only) -->
 +
|language=Lang-Chinese
 +
|translated-by= <!-- [[User: XXXXX]] -->
 +
|translated-from-title=<!-- Title only -->
 +
|translated-from-id= <!-- Id of translated revision -->
 +
|review-by=<!-- After re-review: [[User:username]] -->
 +
|review-timestamp=<!-- After re-review: YYYYMMDD -->
 +
|update-by=<!-- After significant update: [[User:username]]-->
 +
|update-timestamp=<!-- After significant update: YYYYMMDD -->
 +
|creationdate=20101227
 +
|author=[[User:Flycarl]]
 +
}}[[Category:Qt]][[Category:Qt Mobility]]
 
==Messaging==
 
==Messaging==
  
Qt Messaging API 使我们可以处理信息(短信,彩信,邮件等),搜索信息,排列信息,发送信息,提取信息数据,可以调用平台对应的信息客户端来显示已有的信息,合成新信息,或回复已有信息。
+
[http://doc.qt.nokia.com/qtmobility-1.1.0/messaging.html Qt Messaging API] 使我们可以处理信息(短信,彩信,邮件等),搜索信息,排列信息,发送信息,提取信息数据,可以调用平台对应的信息客户端来显示已有的信息,合成新信息,或回复已有信息。
  
 +
 +
----
  
 
=='''命名空间'''==
 
=='''命名空间'''==
 
QtMobility API 放在 QtMobility 的命名空间. 这是为以后Mobility APIs 集成到 Qt做准备. 参考[http://doc.qt.nokia.com/qtmobility-1.1.0/quickstart.html Quickstart guide]中的例子体会这个命名空间如何影响使用QtMobility的开发development.
 
QtMobility API 放在 QtMobility 的命名空间. 这是为以后Mobility APIs 集成到 Qt做准备. 参考[http://doc.qt.nokia.com/qtmobility-1.1.0/quickstart.html Quickstart guide]中的例子体会这个命名空间如何影响使用QtMobility的开发development.
 +
 +
----
  
  
Line 20: Line 47:
  
 
在Linux上,需要安装QMF,同时设置两个环境变量,QMF_INCLUDEDIR设为messagingframework/src/libraries/qtopiamail , QMF_LIBDIR设为build/messagingframework/image/lib。
 
在Linux上,需要安装QMF,同时设置两个环境变量,QMF_INCLUDEDIR设为messagingframework/src/libraries/qtopiamail , QMF_LIBDIR设为build/messagingframework/image/lib。
 +
{|
 +
|[[Image:messaging-class-diagram.PNG|600px]]
 +
|-
 +
|''图1:'' Messaging 类图
 +
|}
 +
{|
 +
|[[Image:qmf-architecture.PNG|600px]]
 +
|-
 +
|''图2:'' Qt Messaging框架 架构
 +
|}
 +
----
  
 
=='''参考文档'''==
 
=='''参考文档'''==
 
==='''主要的类'''===
 
==='''主要的类'''===
{|
+
{|Border="1"
 
|QMessage
 
|QMessage
 
|提供信息相关服务的接口类
 
|提供信息相关服务的接口类
Line 34: Line 72:
 
|-
 
|-
 
|QMessageAccountId
 
|QMessageAccountId
|QMessageAccount 的唯一标识
+
|QMessageAccount 的唯一标识UID
 
|-
 
|-
 
|QMessageAccountSortOrder
 
|QMessageAccountSortOrder
|定义排序参数, 用来排列账号检索结果
+
|定义排序的参数, 用来排列账号检索结果
 
|-
 
|-
 
|QMessageAddress
 
|QMessageAddress
Line 49: Line 87:
 
|-
 
|-
 
|QMessageDataComparator
 
|QMessageDataComparator
|包含Contains types used in specifying the comparison of MessageStore objects with user-defined values
+
|包含一些类型,使用这些类型的自定义值来匹配信息。
 
|-
 
|-
 
|QMessageFilter
 
|QMessageFilter
Line 59: Line 97:
 
|QMessageFolderFilter
 
|QMessageFolderFilter
 
|定义查询参数,用来查找文件夹
 
|定义查询参数,用来查找文件夹
 +
|-
 +
|QMessageFolderId
 +
|信息文件夹的唯一标识UID
 +
|-
 +
|QMessageFolderSortOrder
 +
|定义排序的参数,用来排列文件夹检索结果
 +
|-
 +
|QMessageId
 +
|信息的的唯一标识UID
 +
|-
 +
|QMessageManager
 +
|存储,检索信息,文件夹和账号的主要接口
 +
|-
 +
|QMessageService
 +
|调用信息服务操作的接口
 +
|-
 +
|QMessageSortOrder
 +
|定义排序的参数,用来排列信息检索结果
 +
|}
 +
 +
----
 +
 +
=='''组合和操作信息'''==
 +
Messaging库提供了一系列类来组合和操作信息数据。所有信息类型表示成统一的格式。信息可以由多个部分组成。
 +
用以组合和操作的信息的类如下:
 +
{|Border="1"
 +
|QMessageId
 +
|信息的UID
 +
|-
 +
|QMessage
 +
|一个设计的当的操作信息的接口
 +
|-
 +
|QMessageContentContainer
 +
|处理互联网媒质(MIME)的接口
 +
|-
 +
|QMessageAddress
 +
|操作信息地址字符串的接口
 +
|}
 +
 +
----
 +
 +
=='''信息账号'''==
 +
Messaging库提供访问账号信息的类,接收和发送都可以处理。
 +
 +
信息账号相关的类如下:
 +
{|Border="1"
 +
|QMessageAccountId
 +
|账号的UID
 +
|-
 +
|QMessageAccount
 +
|保存账号的属性
 +
|-
 +
|QMessageFolderId
 +
|文件夹的UID
 +
|-
 +
|QMessageFolder
 +
|表示一个文件夹中的信息集合
 +
|}
 +
 +
----
 +
 +
=='''排序和过滤功能'''==
 +
Messaging库提供了一系列排序和过滤方法来辅助检索信息。这避免了依赖其他的库来管理信息数据。也有利于很高的利用底层的存储机制。
 +
过滤操作通过设定过滤条件来实现,指定某个需要匹配的值或属性,设定需要检索的值与设定值之间的关系。
 +
过滤器可以通过逻辑组合来生成复杂的过滤器。
 +
Messaging库中排序和过滤相关的类如下:
 +
 +
{|Border="1"
 +
|QMessageManager
 +
|存储,检索信息,文件夹和账号的主要接口
 +
|-
 +
|QMessageFilter
 +
|定义查询参数,用来查找信息
 +
|-
 +
|QMessageSortOrder
 +
|定义排序的参数,用来排列信息检索结果
 +
|-
 +
|QMessageFolderFilter
 +
|定义查询参数,用来查找文件夹
 +
|-
 +
|QMessageFolderSortOrder
 +
|定义排序的参数,用来排列文件夹检索结果
 +
|-
 +
|QMessageAccountFilter
 +
|定义查询参数,用来查找账号
 +
|-
 +
|QMessageAccountSortOrder
 +
|定义排序的参数,用来排列账号检索结果
 +
|}
 +
=='''如何使用排序方法'''==
 +
下面是一个使用排序方法的例子,可以在发送信息的例子中找到。
 +
 +
<code cpp-qt>
 +
QMessageIdList ids = QMessageManager().queryMessages(QMessageFilter(),
 +
    QMessageSortOrder::byReceptionTimeStamp(Qt::DescendingOrder), 100, 0);
 +
</code>
 +
 +
----
 +
 +
=='''如何使用过滤方法'''==
 +
下面的代码截取自[http://doc.qt.nokia.com/qtmobility-1.1.0/keepintouch.html Keep In Touch] 例子。这个例子演示了如何使用过滤器达到想要的效果。你可以看到过滤器由逻辑运算连接,类似于C语言中的位操作。使用这种方法我们可以构造更复杂的检索条件。
 +
 +
<code cpp-qt>
 +
QMessageFilter includeFilter(QMessageFilter::byTimeStamp(minimumDate,
 +
        QMessageDataComparator::GreaterThanEqual));
 +
QMessageFilter excludeFilter(QMessageFilter::byTimeStamp(maximumDate,
 +
        QMessageDataComparator::GreaterThanEqual));
 +
QMessageFilter outgoingFilter(QMessageFilter::byStatus(QMessage::Incoming,
 +
        QMessageDataComparator::Excludes));
 +
 +
// Search for messages containing addresses to exclude
 +
service.queryMessages(outgoingFilter & excludeFilter);
 +
 +
// Create the filter needed to locate messages to search for addresses
 +
inclusionFilter = (outgoingFilter & includeFilter & ~excludeFilter);
 +
</code>
 +
 +
----
 +
 +
=='''信息服务'''==
 +
Messaging库提供了QMessageService 类,使用这个类来获得系统本地的信息服务,通过本地的应用实现  发送信息,提取信息中的数据,构造和显示信息等功能。
 +
 +
服务操作的状态通过发送信号(signal)来传递。
 +
 +
QMessageService类之外的方法不应调用网络通信,就是说只有QMessageService 的方法负责初始化网络连接 和随后的信息数据访问。(注意:对于windows桌面应用和有些移动平台并不是这样,有时客户端不能控制网络的激活。)
 +
 +
Messaging库访问信息数据的并行机制,并保证信息数据不会在多个客户端并行访问时损坏, 但是不保证并行访问的效率。
  
QMessageFolderId
+
单个客户端可以通过多线程访问信息数据,但是同时只有一个线程能访问到数据。
+
  
Unique identifier for a QMessageFolder message folder, within the scope of the messaging store
+
----
  
QMessageFolderSortOrder
+
=='''抽象的信息存储机制'''==
+
Messaging库将存储信息数据的方法抽象出来了。
  
Defines the parameters used for sorting a subset of queried folders from the messaging store
+
----
  
QMessageId
+
=='''QML Messaging Elements'''==
+
  
Unique identifier for a QMessage message within the scope of the messaging store
+
* [http://doc.qt.nokia.com/qtmobility-1.1.0/qml-messagemodel.html MessageModel]
 +
* [http://doc.qt.nokia.com/qtmobility-1.1.0/qml-messagefilter.html MessageFilter]
 +
* [http://doc.qt.nokia.com/qtmobility-1.1.0/qml-messageunionfilter.html MessageUnionFilter]
 +
* [http://doc.qt.nokia.com/qtmobility-1.1.0/qml-messageintersectionfilter.html MessageIntersectionFilter]
  
QMessageManager
+
----
+
  
Represents the main interface for storage and retrieval of messages, folders and accounts in the system message store
+
=='''例子'''==
 +
===Keep In Touch===
 +
[http://doc.qt.nokia.com/qtmobility-1.1.0/keepintouch.html Keep In Touch] 这个例子演示了如何从系统中检索有用信息。
 +
===Service Actions===
  
QMessageService
+
[http://doc.qt.nokia.com/qtmobility-1.1.0/serviceactions.html Service Actions]这个例子演示如何使用 Qt Mobility Messaging API来构造信息,发送信息,显示,查找和检索信息,以及对信息事件反馈。
+
  
The interface for requesting messaging service operations
+
----
  
QMessageSortOrder
+
==<u>相关链接</u>==
+
*[[Qt Mobility 开发]]
 +
*[[Qt_开发|Qt 开发]]
 +
*[[Qt Quick (Chinese)]]
  
Defines the parameters used for sorting a subset of queried messages from the messaging store
+
[[Category:Lang-Chinese]][[Category:Qt]][[Category:MeeGo Harmattan]] [[Category:Symbian]]
Composition and Manipulation
+

Latest revision as of 04:17, 11 October 2012

Article Metadata

兼容于
平台:
Symbian

文章
flycarl 在 27 Dec 2010 创建
最后由 hamishwillee 在 11 Oct 2012 编辑

Contents

[edit] Messaging

Qt Messaging API 使我们可以处理信息(短信,彩信,邮件等),搜索信息,排列信息,发送信息,提取信息数据,可以调用平台对应的信息客户端来显示已有的信息,合成新信息,或回复已有信息。



[edit] 命名空间

QtMobility API 放在 QtMobility 的命名空间. 这是为以后Mobility APIs 集成到 Qt做准备. 参考Quickstart guide中的例子体会这个命名空间如何影响使用QtMobility的开发development.



[edit] 简介

Messaging库提供了一系列API来获取信息数据。提供了查询检索信息,文件夹和账号的接口,也有创建,修改和存储信息的接口。提供了一个统一处理和储存短信(sms),彩信(MMS),邮件(MIME Email,TNEF Email)的接口。能处理 不完整提取的信息。

Messaging库提供了接口来发送信息,提取信息包含的数据,合并,回复,转发信息,调用本地应用来显示信息。

当存储的信息,增加,移除和更新的时候可以获得通知。

Messaging库提供了信息数据的统一访问,支持多个应用的并行访问,并不依赖于具体设备上数据的存储方式。

在 Microsoft Windows上,需要安装MAPI头文件,建议通过安装Visual Studio Express来做这件事。

在Linux上,需要安装QMF,同时设置两个环境变量,QMF_INCLUDEDIR设为messagingframework/src/libraries/qtopiamail , QMF_LIBDIR设为build/messagingframework/image/lib。

Messaging-class-diagram.PNG
图1: Messaging 类图
Qmf-architecture.PNG
图2: Qt Messaging框架 架构

[edit] 参考文档

[edit] 主要的类

QMessage 提供信息相关服务的接口类
QMessageAccount 表示一个账号
QMessageAccountFilter 定义检索参数, 用来检索符合条件的账号
QMessageAccountId QMessageAccount 的唯一标识UID
QMessageAccountSortOrder 定义排序的参数, 用来排列账号检索结果
QMessageAddress 表示信息地址的接口
QMessageContentContainer 表示信息内容的接口,支持互联网格式(MIME)和传送中性封装格式(TNEF)的内容,并支持不完整的内容。
QMessageContentContainerId 互联网格式的QMessageContentContainer条目的唯一标识
QMessageDataComparator 包含一些类型,使用这些类型的自定义值来匹配信息。
QMessageFilter 定义查找参数,用来查找信息。
QMessageFolder 表示信息文件夹的接口
QMessageFolderFilter 定义查询参数,用来查找文件夹
QMessageFolderId 信息文件夹的唯一标识UID
QMessageFolderSortOrder 定义排序的参数,用来排列文件夹检索结果
QMessageId 信息的的唯一标识UID
QMessageManager 存储,检索信息,文件夹和账号的主要接口
QMessageService 调用信息服务操作的接口
QMessageSortOrder 定义排序的参数,用来排列信息检索结果

[edit] 组合和操作信息

Messaging库提供了一系列类来组合和操作信息数据。所有信息类型表示成统一的格式。信息可以由多个部分组成。 用以组合和操作的信息的类如下:

QMessageId 信息的UID
QMessage 一个设计的当的操作信息的接口
QMessageContentContainer 处理互联网媒质(MIME)的接口
QMessageAddress 操作信息地址字符串的接口

[edit] 信息账号

Messaging库提供访问账号信息的类,接收和发送都可以处理。

信息账号相关的类如下:

QMessageAccountId 账号的UID
QMessageAccount 保存账号的属性
QMessageFolderId 文件夹的UID
QMessageFolder 表示一个文件夹中的信息集合

[edit] 排序和过滤功能

Messaging库提供了一系列排序和过滤方法来辅助检索信息。这避免了依赖其他的库来管理信息数据。也有利于很高的利用底层的存储机制。 过滤操作通过设定过滤条件来实现,指定某个需要匹配的值或属性,设定需要检索的值与设定值之间的关系。 过滤器可以通过逻辑组合来生成复杂的过滤器。 Messaging库中排序和过滤相关的类如下:

QMessageManager 存储,检索信息,文件夹和账号的主要接口
QMessageFilter 定义查询参数,用来查找信息
QMessageSortOrder 定义排序的参数,用来排列信息检索结果
QMessageFolderFilter 定义查询参数,用来查找文件夹
QMessageFolderSortOrder 定义排序的参数,用来排列文件夹检索结果
QMessageAccountFilter 定义查询参数,用来查找账号
QMessageAccountSortOrder 定义排序的参数,用来排列账号检索结果

[edit] 如何使用排序方法

下面是一个使用排序方法的例子,可以在发送信息的例子中找到。

 QMessageIdList ids = QMessageManager().queryMessages(QMessageFilter(),
QMessageSortOrder::byReceptionTimeStamp(Qt::DescendingOrder), 100, 0);

[edit] 如何使用过滤方法

下面的代码截取自Keep In Touch 例子。这个例子演示了如何使用过滤器达到想要的效果。你可以看到过滤器由逻辑运算连接,类似于C语言中的位操作。使用这种方法我们可以构造更复杂的检索条件。

 QMessageFilter includeFilter(QMessageFilter::byTimeStamp(minimumDate,
QMessageDataComparator::GreaterThanEqual));
QMessageFilter excludeFilter(QMessageFilter::byTimeStamp(maximumDate,
QMessageDataComparator::GreaterThanEqual));
QMessageFilter outgoingFilter(QMessageFilter::byStatus(QMessage::Incoming,
QMessageDataComparator::Excludes));
 
// Search for messages containing addresses to exclude
service.queryMessages(outgoingFilter & excludeFilter);
 
// Create the filter needed to locate messages to search for addresses
inclusionFilter = (outgoingFilter & includeFilter & ~excludeFilter);

[edit] 信息服务

Messaging库提供了QMessageService 类,使用这个类来获得系统本地的信息服务,通过本地的应用实现 发送信息,提取信息中的数据,构造和显示信息等功能。

服务操作的状态通过发送信号(signal)来传递。

QMessageService类之外的方法不应调用网络通信,就是说只有QMessageService 的方法负责初始化网络连接 和随后的信息数据访问。(注意:对于windows桌面应用和有些移动平台并不是这样,有时客户端不能控制网络的激活。)

Messaging库访问信息数据的并行机制,并保证信息数据不会在多个客户端并行访问时损坏, 但是不保证并行访问的效率。

单个客户端可以通过多线程访问信息数据,但是同时只有一个线程能访问到数据。


[edit] 抽象的信息存储机制

Messaging库将存储信息数据的方法抽象出来了。


[edit] QML Messaging Elements


[edit] 例子

[edit] Keep In Touch

Keep In Touch 这个例子演示了如何从系统中检索有用信息。

[edit] Service Actions

Service Actions这个例子演示如何使用 Qt Mobility Messaging API来构造信息,发送信息,显示,查找和检索信息,以及对信息事件反馈。


[edit] 相关链接

This page was last modified on 11 October 2012, at 04:17.
266 page views in the last 30 days.
×