• Windows Phone 8下 友盟社会化组件SDK的使用。


    由于项目的需要,要将友盟的社会化组件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

  • 相关阅读:
    springboot拦截器的拦截配置和添加多个拦截器
    ASCII对照
    爬虫出现403错误解决办法
    PhantomJS在Selenium中被标记为过时的应对措施
    Selenium 之订制启动Chrome的选项(Options)
    Selenium+PhantomJS使用时报错原因及解决方案
    python爬虫之xpath的基本使用
    JSONObject类的引用必须jar包
    selenium之使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
    PhantomJS 与python的结合
  • 原文地址:https://www.cnblogs.com/yffswyf/p/4118147.html
Copyright © 2020-2023  润新知