×
Namespaces

Variants
Actions

Взаимодействие приложений (AIW)

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Статья
Перевод:
truf
Последнее редактирование: hamishwillee (16 Dec 2011)

Note.pngNote: :Это API не является частью SDK. Для его использования вы должны установить SDK API Plug-in.

Служба взаимодействия приложений (Application Interworking framework или AIW) - это механизм динамического добавления функциональности в ваше приложение, без необходимости статического связывания с его кодом и знания сервисов, доступных на телефоне.

В системе AIW вводится понятие критерия (criteria item) означающее нечто, интересующее приложение-клиент. Массив критериев называется интересом (interest). Интерес приложения-клиента может быть объявлен в файле ресурсов или создан во время работы с помощью класса CAiwCriteriaItem. На основе критериев AIW ищет подходящих провайдеров услуг (service providers) и инициализирует требуемых провайдеров.

Главным классом системы AIW является CAiwServiceHandler. Он реализует клиентскую часть AIW API. Каждое приложение использующее службы AIW должно создать экземпляр этого класса. Обработчик сервисов (CAiwServiceHandler) реализует поддержку динамически загружаемых провайдеров услуг, которые в свою очередь предоставляют сервисы приложению-клиенту. Обработчик сервисов соединяет приложение-клиент и провайдеров услуг при помощи интересов и соглашений о данных (data agreements), в то же время скрывая клиента от провайдеров.

Пример: Если приложение хочет сделать звонок, оно может воспользоваться функциональностью подходящего провайдера. Приложение-клиент объявляет своим интересом использование подобного сервиса в rss файле или с помощью CAiwCriteriaItem:


  // Динамическое объявление
 
CAiwCriteriaItem* criteria = CAiwCriteriaItem::NewLC(
KAiwCmdCall, KAiwCmdCall,
_L8( "*" ) );
 
 
// объявление в rss файле
 
RESOURCE AIW_INTEREST r_aiwconsumerapp_interest1
{
items =
{
AIW_CRITERIA_ITEM
{
id = EAIWPlaceHolder;
serviceCmd = KAiwCmdCall; //из aiwcommon.hrh
serviceClass = KAiwClassMenu; //из aiwcommon.hrh
contentType = "*";
//defaultProvider = 0x101F868E;
maxProviders =1;
}
};
}



Идентификатор этого ресурса должен быть передан в метод AttachL() обработчика сервисов. Система AIW использует общий список параметров для передачи данных между клиентом и провайдерами. Элементы этого списка имеют семантические значения идентификаторов (sematic ID values), определяющие тип хранящихся в них данных. Эти значения определены в AIWGenericParams.hrh.

К примеру. для того чтобы произвести звонок, вам необходимо указать телефонный номер, тип звонка (видео, голосовой, VoIP), имя звонящего. Эти значения передаются с помощью TAiwDialDataV1, чтобы уведомить об этом провайдера указывается EGenericParamCallDialDataV1.


    CAiwServiceHandler* serviceHandler = CAiwServiceHandler::NewLC();
 
// Создадим интерес для AIW
RCriteriaArray interest;
CleanupClosePushL( interest );
 
CAiwCriteriaItem* criteria = CAiwCriteriaItem::NewLC(
KAiwCmdCall, KAiwCmdCall,
_L8( "*" ) );
TUid base;
base.iUid = KAiwClassBase;
criteria->SetServiceClass( base );
 
User::LeaveIfError( interest.Append( criteria ) );
 
// Подключаем интерес к AIW
serviceHandler->AttachL( interest );
 
// Создадим упакованный параметр для AIW
TAiwDialDataV1 data;
TAiwDialDataV1Pckg dataPckg( data );
 
iNameBuffer = aName.Left( iNameBuffer.MaxLength() );
 
data.SetName( iNameBuffer );
 
iTelNumber = aNumber.Left( iTelNumber.MaxLength() );
 
data.SetTelephoneNumber( iTelNumber );
 
data.SetCallType( aCallType );
 
data.SetWindowGroup( CCoeEnv::Static()->RootWin().Identifier() );
 
CAiwGenericParamList& paramList = serviceHandler->InParamListL();
 
TPtrC8 ptr;
ptr.Set( dataPckg );
TAiwVariant variant( ptr );
 
TAiwGenericParam param( EGenericParamCallDialDataV1, variant );
paramList.AppendL( param );
 
// Выполняем команду AIW
serviceHandler->ExecuteServiceCmdL( KAiwCmdCall, paramList,
serviceHandler->OutParamListL() );
 
CleanupStack::PopAndDestroy( 3 ); // criteria, interest, serviceHandler

 

Внутренние ссылки

This page was last modified on 16 December 2011, at 07:33.
49 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×