You Are Here:

Community: Wiki

This page was last modified on 31 December 2007, at 13:27.

How to subscribe presence status using SIP APIs

From Forum Nokia Wiki

This sample code is used for subscribing the presence status like online/offline. for event subscription we use CSIPSubscribeDialogAssoc class for sending subscribe request. and for event we use eventheader classes.


**code snippet **

CMyExCode::SubscribeEvent()
 
{
 
CSIPMessageElements* msgElem = CSIPMessageElements::NewL();
CleanupStack::PushL( msgElem );
 
_LIT8(KMediaType,"application");
_LIT8(KMediaSubType,"pidf+xml");
CSIPContentTypeHeader* ct = CSIPContentTypeHeader::NewLC(KMediaType,KMediaSubType);
 
TBuf8<512> doc;
 
_LIT8(kdoc1,"<?xml version=\"1.0\" encoding=\"UTF-8\"?><presence
xmlns=\"urn:ietfarams:xml:nsidf\" entity=\""
);
_LIT8(kdoc2,"\"><tuple id=\"tup1\"
><status><basic>open</basic></status><note>"
);
_LIT8(kdoc3,"</note></tuple></presence>"); //presence document
 
doc.Copy(kdoc1);
doc.Append(*aor);
doc.Append(kdoc2);
doc.Append(_L8("Online"));
doc.Append(kdoc3);
 
msgElem->SetContentL(doc.AllocL(),ct);
CleanupStack::Pop( ct );
 
//Get the current connection
CSIPConnection& conn = ConnectionL();
 
// Create user header array
RPointerArray<CSIPHeaderBase>* userHeadersArr = new(ELeave)RPointerArray<CSIPHeaderBase>;
CleanupStack::PushL( userHeadersArr );
 
RDebug::Print(_L("Start Of SubscribeL4"));
 
 
// Create Expires Header
CSIPExpiresHeader* expiresHdr = new (ELeave)CSIPExpiresHeader(60);
 
CleanupStack::PushL( expiresHdr );
 
userHeadersArr->Append(expiresHdr);
CleanupStack::Pop( expiresHdr );
 
// Set the User Headers
msgElem->SetUserHeadersL(*userHeadersArr);
CleanupStack::Pop( userHeadersArr );
 
//Create Event Header
CSIPEventHeader* eventHdr = CSIPEventHeader::NewL(_L8("PRESENCE"));
CleanupStack::PushL( eventHdr );
userHeadersArr->Append(eventHdr);
 
// create an object for refresh
CSIPRefresh* iRefresh = CSIPRefresh::NewL();
CleanupStack::PushL( iRefresh );
 
// create an object for CSIPSubscribeAssoc
 
iSIPSubscribeDialogAssoc = CSIPSubscribeDialogAssoc::NewL
(conn, fromHeader, uri8, eventHdr, toHeader, cont);
 
CleanupStack::PushL( iSIPSubscribeDialogAssoc );
 
CSIPClientTransaction* clientTx ;
TRAPD(err,clientTx = iSIPSubscribeDialogAssoc->SendSubscribeL
(msgElem, iRefresh));
 
if(err!=KErrNone)
{
 
User::Leave(err);
}
 
CleanupStack::Pop( iSIPSubscribeDialogAssoc );
CleanupStack::Pop( iRefresh );
 
CleanupStack::Pop( eventHdr );
CleanupStack::Pop( msgElem );
delete clientTx;
}
 

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZidentifierQSxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2findeE78E2ephpE2fE25E455E25A6E2582E25E454E25BE44E2595E25E455E259CE25A8E25E456E2594E25B6E25E454E25BBE25B6E25E457E25AE45E25B1E25E455E2588E259BE25E455E25BBE25BAE25E457E259FE25AE44E25E454E25BFE25A1X qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqfntypeZWikiContentQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qfnZtopicQUqfnTopicZseriesE5f60Q qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qfnZtypeQUqfntypeZWikiContentQ qfnZuserE5ftagQSxs60X qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqfntypeZWikiContentQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ