| 
 | 
	
 
 
   
  由于项目的需要,要将友盟的社会化组件SDK由0.9更新至2.0. 版本变化比较大。 
  1、很多类以及命名空间已经取消了。 
  如UmengSocialSDK.Net.Request命名空间, UmengSocial类等。 
  2、微信会话和朋友圈已整合成一个。 
  老版本两者分别是两个类,此处已经整合为一个。(WP8.1下暂时无法分享至微信、朋友圈) 
   
  分享内容支持三种:Link链接、Text文字、Picture图片 
  具体查看官方文档:http://dev.umeng.com/social/windows-phone/share/detail-share  
  对于各个分享,加入完整必须属性后,才能够分享成功,不然就无反应。(比如:分享图片,微信必须有Title和Image, 而其他平台不能要Title) 
   
                             UmengPicture类 
 
 
成员新浪微博人人网腾讯微博QQ空间豆瓣微信 
 
 
 |  | Loc | (位置信息)可选      | × |  | Text | (文本内容)可选       |  | Title | × | × | × | × | × | √ |  | Image | √ | √ | √ | √ | √ | √ |  
  
 
   另外,无法实现将图片和文字同时分享到微信和朋友圈中。 
  (也就是说,图片分享至微信无法看到文字;链接分享到微信也只有一张可转到其他网页的图片,而无文字) 
  以新浪微博为例,分享屏幕截屏  (详细配置及其他事项的请参照官方说明文档): 
 
 
 
SinaWeiboClient Sina = new SinaWeiboClient(DataBaseManager.AppYouMengKey);  //创建对象 
private async void btnShare_Click(object sender, RoutedEventArgs e)  //点击分享按钮 
{ 
  bool flag = await Sina.CheckLoggedin();  //判断是否已(登陆)授权 
  if (flag)  //如果已授权,则直接分享 
  { 
    ShareImage();  //分享 
  } 
  //如果目标平台未授权则先授权再分享 
  else 
  { 
    var rec = await Sina.LoginAsync();  //登陆,打开登陆授权页面 
    if (rec.Status == LoginStatus.Success)  //登陆成功 
    { 
      ShareImage(); 
    }     
    else 
    { 
      MessageBox.Show("登陆失败");     
    } 
  } 
} 
private async void ShareImage()  //分享图片 
{ 
  var res = await Sina.SharePictureAsync(GetImageShare(), true);  //调用分享图片方法,isEditable = true 可编辑 
  if (res.Status == ShareStatus.Success)  //分享成功 
    MessageBox.Show("分享成功"); 
  else if (res.Status == ShareStatus.UserCanceled)  //用户退出分享界面 
    return; 
  else 
    MessageBox.Show("分享失败"); 
} 
private UmengPicture GetImageShare()  //返回值为UmengPicture类型 
{ 
  WriteableBitmap writeableBitmap; 
  writeableBitmap = ShotScreen();  //截屏 
  MemoryStream stream = new MemoryStream(); 
  writeableBitmap.SaveJpeg(stream, writeableBitmap.PixelWidth, 
  writeableBitmap.PixelHeight, 0, 100); 
   
  UmengPicture picture = new UmengPicture(stream.ToArray(), "图片详细描述")  //image为数组 
  { 
    Text = "这是新浪分享的内容"             
  }; 
  /* 
  if (SharePlatform == SharePlatform.Wechat) 
    picture.Title = "图片分享"; 
  */ 
  return picture; 
 } 
private static BitmapSource ShotScreen()  //截屏 
{              
  PhoneApplicationFrame frame = System.Windows.Application.Current.RootVisual as PhoneApplicationFrame;              
  PhoneApplicationPage page = frame.Content as PhoneApplicationPage; 
  WriteableBitmap wBitmap = new WriteableBitmap((int)page.ActualWidth, (int)page.ActualHeight);              
return wBitmap;          
} 
private async void btnLogOut_Click(object sender, RoutedEventArgs e)  //登出 
{ 
  await Sina.LogoutAsync();  //貌似老版本没有登出的方法 
} 
   
PS: 我在退出后重进程序分享失败(已经是授权的情况下,分享报错OAuthExpired)(已解决,方案如下) 
  但是问了其他人,说是没问题的。我就不懂了。。 
  补充:但是呢,测试了官方给的Demo,也是一样的问题呀。。正在联系官方人员解决。希望有结果。 
  有结果了:  联系了友盟,经过三天时间,对方修复了bug。太开心了。貌似官方还没有更新。 
  现在上传上来: http://t.cn/RzWdI4w 
  引用-管理NuGet程序包-设置。  
  添加一个程序包源,更改源路径后保存。 
  在联机中选择“友盟社会化组件”安装 
 
 
  如果不需要支持全部平台,可依照下表删除对应引用。 
  Facebook: Facebook 
  微信:Google.ProtocolBuffersLite    +     MicroMsgSDK 
  Twitter : Hammock.WindowsPhone     +      ICSharpCode.SharpZipLib.WindowsPhone 
  PS:如果原来引用过旧版本,要先删除工程目录下的package文件,不然使用的还是以前的Dll |   
 
 
 
 | 
  
 |