Windows 8 Store App 以及Windows Phone App分享功能的实现,以及主流社交应用的SDK资源
在这个章节我们主要谈论一下关于W8/WP Store App的社交分享功能,这也是一个广泛讨论的课题。而就在几个小时之前,微信作为亚洲最大用户群体的移动即时通讯app,对外发布了为WP app服务的SDK,这更加促使我们在这里为大家收集一些比较有价值的信息以及第三方实现了分享功能的SDK和服务,以满足大家的开发需求,特别是对于当前分享功能相对有限的Windows Phone 平台。
Windows Store App中的分享
Windows Store App原生在charm bar就提供了分享按钮(share),app最直接方便的分享方式就是实现share contract,作为share source来对外发布希望分享的内容,而只要系统已经安装了实现share target contract的app,则可以接收这类分享。相关的API大部分都在Windows.ApplicationModel.DataTransfer 命名空间下面。整个分享机制可以理解为以下几个步骤:
1. 在app全局或者页面注册DataRequested事件,这个事件会在用户激活charm bar上面的分享按钮时候触发。在事件中,所需要做到的就是把当前上下文中的有用的信息填入到一个需要最终传递到外部的share package (DataRequestedEventArgs.Request)中,这个package有许多常用的在分享场景中所需要的属性,如标题、缩略图、图片、正文等等。
2. 实际上这个event handler走完,对于share source app来说就完成任务了。而对于接收方share target app来说,需要在appmanifest中声明Share Target Declaration,并配置能够接收哪些类型的share,比如HTML、文本、位图等等。接下来系统会把符合当前这个share package要求的能够正确接收这类分享内容的app都列出来,由用户来选择分享到哪里去。
3. 在share target app中还需要实现若干个全局事件,以应对app被share charm激活并传入响应的内容和文件。
MSDN中的详细参考,请移步:
- Sharing and exchanging data
- Sharing content source app sample
- Sharing content target app sample
- Quickstart: Sharing content
- Quickstart: Receiving shared content
另外还能够通过剪贴板、通过FilePicker在某个指定路径存取文件来做到同外界进行互动和内容分享,以及通过LaunchUriAsync,构建带有参数的Uri,启动能够响应这类URI protocol的对应app,以达成分享目的。
- Clipboard app sample
- Provide files and a save location through a file picker sample
- How to launch the default app for a URI
- How to launch the default app for a file
Windows Phone App中的分享
相对来说WP原生提供的分享交互功能就比较有限了,这也是我们要写这篇博客文章的原因。
总的来说在WP中的原生分享功能是围绕着图片分享来实现的。最为直观的就是在图片库中选择了某一个图片之后,在appbar中可以直接选择“共享…”。这里我们的app主要是扮演着上文Windows Store App中的“Share Target app”的角色,而且只能接收从系统图片库中发出的单个图片的分享。以下几篇文章描述了如何声明使我们的app能够在share picker中被列举出来,并能够正确接收分享:
- Extending the share picker for Windows Phone
- Photo extensibility for Windows Phone
- Photo Extensibility Sample
而作为Share Source,则能够通过ShareMediaTask来把某个图片或者拍摄的照片分享出去,调用share picker。而对于ShareMediaTask的实现方式,实际上首先我们得把图片存储到本地的Media library ,然后传递出去图片在library中的路径,因而还需额外声明ID_CAP_MEDIALIB_PHOTO。
以及同Windows Store App类似,能够声明URI protocol,来通过不同参数来启动另外一个app以达到内容分享的目的。但是因为不同app之间无法共享存储,所以这里也最多只能通过LaunchUriAsync传递有限的文本内容,或者通过LaunchFileAsync来传递某个文件。值得注意的是,如果需要目标app能够接受这个uri或者文件,这个目标app必须是已经注册了同对应的protocol或者文件类型相关联的,且这些类型没有被系统默认预留,如.txt/http.
- Auto-launching apps using file and URI associations for Windows Phone 8
- URI Association Sample
- Reserved file and URI associations for Windows Phone 8
最后便是通过系统原生的若干个Task Launcher,把我们希望传递的文本信息,通过撰写Email,短信SMS对外发送,或者把某个链接或一些状态文字分享到我们在人脉中的“当前状态”:
- How to use the email compose task for Windows Phone
- How to use the SMS compose task for Windows Phone
- How to use the share status task for Windows Phone
- How to use the share link task for Windows Phone
- Launchers and Choosers for Windows Phone
第三方SDK
当平台本身限制了不同的app之间的互相通讯,更加直观的方式或许就是把集成认证、分享功能直接包装在专门的库中,直接在app内部调用,实现对外分享的功能。以下内容为本人收集和归纳,排名不分先后。
微信开放平台
如同开篇所述,微信开放平台Windows Phone 8 SDK已经发布。请参考:
- 发布页面:https://open.weixin.qq.com/app/notice?id=1&lang=zh_CN
- 下载SDK:https://open.weixin.qq.com/download/sdk/wechat_sdk_wp8.zip
- 上手指南:https://open.weixin.qq.com/document/gettingstart/wp8/?lang=zh_CN
当前SDK实现两个主要微信功能:
- 应用可以把信息分享给微信朋友。第三方应用可以调起微信,将文本、图片、链接、音乐、视频等信息分享给微信朋友。微信也可以在聊天界面中调起第三方应用来分享信息
- 应用中的信息也可以分享到微信朋友圈。第三方应用可以将文本、图片、链接、音乐、视频等信息分享到微信朋友圈中。
当前微信开放平台的功能还相对简单,但是其核心功能即分享亦是本文的主旨。由于微信的定位特殊性,它并没有直接开放基于HTTP的Web服务或者集成验证的方式来实现单点登录。所以运行通过SDK中所包含的示例项目我们就能发现,实际上在WP版本的开放平台的分享实现,是通过file association/auto launching app相关功能,显示把要分享的内容序列化到源app的本地目录,然后应该是通过LaunchFileAsync来“执行这个特殊文件”,而已经安装了的微信的本体程序则已声明了对相关接口或文件的关联,自然就会启动微信,并进行后续分享。
新浪微博开放平台
平台官方概述: https://open.weibo.com/wiki/%E6%A6%82%E8%BF%B0
新浪微博开放平台(Weibo Open Platform)是基于新浪微博海量用户和强大的传播能力,接入第三方合作伙伴服务,向用户提供丰富应用和完善服务的开放平台。将你的服务接入微博平台,有助于推广产品,增加网站/应用的流量、拓展新用户,获得收益。超过200个数据接口,包括微博内容、评论、用户、关系、话题等信息,API日均调用量超过330亿次。 不限语言、不限平台的自由接入,不收取任何费用。提供多种SDK,包括C++、PHP、JAVA、Action Script、Python、JS、iOS、Android、WP7等流行语言的软件开发工具包。提供发微博、读取微博等功能实例代码,可以帮助你快速掌握调用API方法,降低开发门槛。
在其SDK下载页面https://open.weibo.com/wiki/SDK 我们可以看到,微博提供了WP7 (兼容WP8)以及Windows Store App的SDK。通过在我们的app中嵌入相关库,实现在app中的通过OAuth2.0协议进行授权,并直接通过调用开放平台的网络服务来实现从最基础的信息分享,到更深层次的微博信息互动的目的。新浪也的确非常具有开放精神,我们可以看到所有版本的SDK都已开源,其官网的不同版本的下载地址都是指向几个主流的代码协作和分享平台,如 Google Code,GitHub以及CodePlex。WP SDK: https://weibowp7sdk.codeplex.com/ , W8 SDK:https://weibowinrtsdk.codeplex.com/。
开心网开放平台
提供了Windows 8 SDK。 https://wiki.open.kaixin001.com/index.php?id=SDK 包含了Oauth验证方式和API2.0调用。下载地址:https://code.google.com/p/kaixin-winphone-sdks/
腾讯微博无线接入 for WP7
为了更好的帮助第三方接入无线应用,微博无线应用开放平台提供了支持iOS、Android及Windows Phone7的SDK,封装了微博登录及部分微博开放API接口,应用只需要修改相应参数,不需要理解验证授权流程,即可实现微博登录功能。下载页面:https://dev.t.qq.com/wireless/winphone/
social share lib for windows phone
这里我们要隆重推荐一下这个开源项目“social share lib for windows phone”。Github地址:https://github.com/alexiscn/social_share,以及作者的新浪微博地址https://weibo.com/xshf12345 、 twitter https://twitter.com/alexis_cn
social share lib是一个同时支持WP7和WP8的社交分享的SDK,提供了对新浪微博、腾讯微博、人人网、QQZone的支持。如同之前所述,除了比较特殊的只给手机移动设备开放的微信平台,其他的主流社交网站都提供了基于OAuth协议授权的Web Service,而这些service都能够通过简单的HTTP Request/Response来达成,且各开放平台的API模型相对结构类似,因而@Alexis 对其做了完善的包装,方便广大的开发者。
以上列举出的各大开放平台SDK都包含了完善的说明以及示例代码,祝大家开发愉快,发布更多更好的包含社交元素的Windows 8和Windows Phone的炫酷应用。