Improved Browser Support
Version 3.0 supports Google Chrome and uses the postMessage feature in HTML5-enabled browsers for improved performance.
Cross-Page Navigation
The Windows Live Messenger Library now has cross-page navigation support, which enables users to navigate across pages of the same site without having to sign in again. The library uses the browser’s local storage to cache the user's sign in state in the browser. Conversations and other activities are persisted between pages. For more information about this feature, see Cross-Page Navigation.
Windows Live ID Delegated Authentication
Applications can now sign in users with Windows Live ID Delegated Authentication. An application can sign a user in to Windows Live™ Messenger through the library with a delegation token after obtaining the user's consent. For more information about this feature, see Delegated Authentication for the Windows Live Messenger Web Toolkit.
Application Contacts
The Windows Live Messenger Library now supports presence and instant messaging between Live Messenger users who have consented to the same application. An application can enable chat between its Live Messenger users, even if those users have not added each other as Live Messenger contacts. The users can chat without revealing their e-mail addresses. This makes it possible for users of a social networking site to chat, as long as the initiator is on the social networking site.
Applications define which application users are able to see each other's presence and chat with each other. This is done with the User.ApplicationContacts. For more information about this feature, see Application Contacts.
New Loader
The Windows Live Messenger Library is loaded with a new script loader. Instead of the application loading the JavaScript library directly, the loader takes care of loading the needed files asynchronously. For more information about the loader, see Loading the Windows Live Messenger Web Toolkit.
Other Improvements
Application User Properties
Applications can now set a display name and personal message for each signed-in user of the application. The application display name and personal message are propagated to all of the user's Windows Live contacts and application contacts. This makes it possible for applications to avoid making server requests to display the application-specific profile name of each user in certain scenarios.
The application user properties for contacts are available both in the Contact object and for each endpoint in the Contact.Endpoints collection. The Contact object exposes the application user properties for the application that the Windows Live Messenger Library user is signed in with. If the contact is signed in from another application, the application user properties for that application are available in the contact's endpoint data for that application.
New Contact Properties
The Contact object supports additional properties to simplify application programming.
-
IsOnline: Returns whether the user is online.
-
IsApplicationContact: Returns whether the contact is an application contact.
-
ProfileUrl: Returns the URL to the user's Windows Live profile.
New Ways to Add and Find Contacts
Users can add new Windows Live contacts without knowing their e-mail addresses. This feature is useful in conjunction with the new Application Contacts feature in which two Windows Live users don't know each other's e-mail address. The application can facilitate the addition of new contacts in this situation by using the user's CID. Applications can also search for contacts by CID through the ContactCollection.FindByCid method.
New IM Address Properties
The IMAddress.Contact property returns the contact associated with an IMAddress. This feature is useful in Conversation objects where the roster only contains IMAddress objects.
New Conversation Methods
ConversationCollection adds the Create(Contact) and Invite(Contact) methods to support the creation of conversations with application contacts.
Improved Authentication
The Microsoft.Live.Core.AuthenticationCompletedEventArgs object exposes additional properties to make it easier to handle different authentication states, such as whether a user is already signed in.