当前位置: 代码迷 >> Android >> android 友盟SNS_SDK替Android应用加入SNS分享、同步功能
  详细解决方案

android 友盟SNS_SDK替Android应用加入SNS分享、同步功能

热度:47   发布时间:2016-05-01 20:42:57.0
android 友盟SNS_SDK为Android应用加入SNS分享、同步功能

使用友盟SNS_SDK为Android应用加入SNS分享、同步功能

分类:?android?720人阅读?评论(0)?收藏?举报

?

?





很多朋友在开发Android应用的过程中,都想加入社会化的分享功能,如将自己的应用使用状态或心得同步到新浪微博、人人网或腾讯微博等。这些社交网络或微博都已经发布了针对开发者的开放平台(关于开放平台的相关信息,请参考《说说微创业——关于开放平台和微时代》),因此我们可以将这些分享功能集成到自己的应用中,提高用户的互动性和产品推广效果。将应用与社会化网络联系起来已经成为现在移动开发的主流趋势之一。

可对于新手而言,各大开放平台的SDK使用方法还需要花费很大精力来学习,如果仅仅是开发Demo的话,其实没有必要花费过多的时间在此。近两天我也在想办法给自己的应用加入社会化分享功能,偶然的机会看到了友盟提供的SNS_SDK(测试版),简单的试用过以后感觉不错,因此分享给大家,让我们的产品在开发初期也能快速方便的拥有SNS分享同步功能。

友盟SNS_SDK目前提供两种分享方式:一种是文字分享,另一种是图文(图片+文字)分享。支持的开放平台目前有新浪微博、人人网和腾讯微博。首先我们要下载相应的SDK。

?

进入友盟文档中心,点击左侧的开发工具SDK目录,在右侧点击下载即可。这里是一个简要的开发文档(点击查看),当然我们会在下面为大家详细介绍其使用方法。

首先我们应该注册一个友盟账号(点击注册),注册完成后登录,进入友盟的管理后台,点击“添加新应用”,进入新应用信息填写的页面。App 建立成功后,自动会跳转到该App管理页面的开发指南页面。在这个页面中获得该App 的AppKey(非常重要)。获得该Appkey 后,请继续完成以下步骤:

UMENG_APPKEY 和分享平台的绑定:

获得appkey后,还需要将应用和我们要使用的分享平台注册时获取的appkey 和appsecret绑定。注册过程如下:

新浪微博:http://open.t.sina.com.cn -> 我是开发者 -> 创建新应用

腾讯微博:http://open.t.qq.com/ -> 创建应用

人人网:?http://dev.renren.com/ -> 创建应用

注意:人人网的应用创建完成后,在“我的应用”页面将可以看到获得的AppId,Appkey, Secret,至此还需要去设置App 的Callback URL:点击“应用设置”下的“编辑应用属性”,在跳转后的页面中,点击 “Canvas 设置”, 设置“Canvas Callback URL”为:http://sns.whalecloud.com/renr/callback 保存即可, 最后因为SDK 中使用了人人的status.set 和photo.upload 接口(这两个接口属于人人定义的高级API), 目前人人要求对高级API的使用须向其提交申请,具体流程参见:人人API 申请审核制度(V1.0) 下的“申请流程”。不过现在作为测试者,可以先不申请,具体详见高级API测试方案。

在各平台注册应用后,接下来需要完成 UMENG_APPKEY 和友盟支持的分享平台注册应用时获取的appkey 和appsecret 绑定。具体操作为:开发工具->SNS 分享->设置。如下图所示:

?

接下来我们要开始集成到应用中去咯:

一、导入UMeng-Android-SDK-SnsService.jar (简称SDK)

右键工程根目录,选择 Properties -> Java Build Path -> Libraries,然后点击 Add?External JARs… 选择指向 UMeng-Android-SDK-snsService.jar 的路径,点击 OK,即导入成功。

与此同时SDK 中引用了httpmime-4.1.1.jar 和commons-httpclient-3.1.jar 这两个第三方的包,请用同样的方式引入工程。

二、配置AndroidMainfest.xml

1. 添加Activity “com.umeng.api.activity.OauthActivity”和”com.umeng.api.activity.UpdateStatusActivity”

1234567891011121314151617
[xml]?view plaincopyprint?
  1. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><activity</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"com.umeng.api.activity.OauthActivity"</span></span>??
  2. <span?style="color:#009900">????<span?style="color:#000066">android:screenOrientation</span>=<span?style="color:#ff0000">"unspecified"</span></span>??
  3. <span?style="color:#009900">????<span?style="color:#000066">android:windowSoftInputMode</span>=<span?style="color:#ff0000">"adjustResize"</span></span>??
  4. <span?style="color:#009900">????<span?style="color:#000066">android:configChanges</span>=<span?style="color:#ff0000">"orientation|keyboardHidden"</span><span?style="color:#000000;?font-weight:bold">></span></span>??
  5. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></activity<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  6. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><activity</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"com.umeng.api.activity.UpdateStatusActivity"</span></span>??
  7. <span?style="color:#009900">????<span?style="color:#000066">android:theme</span>=<span?style="color:#ff0000">"@style/Theme.IOSched"</span></span>??
  8. <span?style="color:#009900">????<span?style="color:#000066">android:windowSoftInputMode</span>=<span?style="color:#ff0000">"stateVisible|adjustResize"</span></span>??
  9. <span?style="color:#009900">????<span?style="color:#000066">android:screenOrientation</span>=<span?style="color:#ff0000">"unspecified"</span></span>??
  10. <span?style="color:#009900">????<span?style="color:#000066">android:configChanges</span>=<span?style="color:#ff0000">"orientation|keyboardHidden"</span><span?style="color:#000000;?font-weight:bold">></span></span>??
  11. ????????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><intent-filter<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  12. ????????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><action</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"android.intent.action.VIEW"</span><span?style="color:#000000;?font-weight:bold">/></span></span>??
  13. ????????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><category</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"android.intent.category.DEFAULT"</span><span?style="color:#000000;?font-weight:bold">/></span></span>??
  14. ????????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><category</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"android.intent.category.BROWSABLE"</span><span?style="color:#000000;?font-weight:bold">/></span></span>??
  15. ????????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><data</span>?<span?style="color:#000066">android:scheme</span>=<span?style="color:#ff0000">"schemaYourUmengAppKey"</span><span?style="color:#000000;?font-weight:bold">/></span></span>??
  16. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></intent-filter<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  17. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></activity<span?style="color:#000000;?font-weight:bold">></span></span></span>??

2.修改Activity “com.umeng.api.activity.UpdateStatusActivity”中的data标签:

123456
[xml]?view plaincopyprint?
  1. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><activity</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"com.umeng.api.activity.UpdateStatusActivity"</span>?…<span?style="color:#000000;?font-weight:bold">></span></span>??
  2. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><intent-filter<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  3. ????????…??
  4. ????????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><data</span>?<span?style="color:#000066">android:scheme</span>=<span?style="color:#ff0000">"schema你的应用程序的友盟Appkey"</span>?<span?style="color:#000000;?font-weight:bold">/></span></span>??
  5. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></intent-filter<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  6. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></activity<span?style="color:#000000;?font-weight:bold">></span></span></span>??

例如你的UMENG_APPKEY 为:4da011e664f3b4a487000002,则data 标签改为:

1
[xml]?view plaincopyprint?
  1. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><data</span>?<span?style="color:#000066">android:scheme</span>=<span?style="color:#ff0000">"schema4da011e664f3b4a487000002"</span>?<span?style="color:#000000;?font-weight:bold">/></span></span>??

3. 添加UMENG_APPKEY:

1234
[xml]?view plaincopyprint?
  1. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><application</span>?…<span?style="color:#000000;?font-weight:bold">></span></span>??
  2. ????…??
  3. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><meta-data</span>?<span?style="color:#000066">android:value</span>=<span?style="color:#ff0000">"你的应用的Appkey"</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"UMENG_APPKEY"</span><span?style="color:#000000;?font-weight:bold">></span><span?style="color:#000000;?font-weight:bold"></meta-data<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  4. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></application<span?style="color:#000000;?font-weight:bold">></span></span></span>??

4.添加相应的权限:

android.permission.ACCESS_NETWORK_STATE?用于判断网络的状态,因为SDK 中提供的服务仅在有网络时有效;

android.permission.INTERNET?用于完成分享内容的发送;

android.permission.READ_PHONE_STATE?读取终端的IMEI, 以用于分享的统计。

123456
[xml]?view plaincopyprint?
  1. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><manifest</span>?…<span?style="color:#000000;?font-weight:bold">></span></span>??
  2. ????…??
  3. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><uses-permission</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"android.permission.ACCESS_NETWORK_STATE"</span><span?style="color:#000000;?font-weight:bold">/></span></span>??
  4. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><uses-permission</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"android.permission.INTERNET"</span><span?style="color:#000000;?font-weight:bold">/></span></span>??
  5. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><uses-permission</span>?<span?style="color:#000066">android:name</span>=<span?style="color:#ff0000">"android.permission.READ_PHONE_STATE"</span><span?style="color:#000000;?font-weight:bold">/></span></span>??
  6. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></manifest<span?style="color:#000000;?font-weight:bold">></span></span></span>??

5.下面这段文字来自官方:

如果您调用我们提供的SDK 的Activity 支持横竖屏的切换,并且您使用的是我们SDK 中提供的默认分享页面,我们强烈建议您将该Activity 设置为在横竖屏切换时Activity 不销毁, 您只需在该Activity 中添加: android:configChanges=”orientation|keyboardHidden”。这对您的应用功能,性能均无影响,因为我们的SDK 默认的分享页面与您的应用的交互是从弹出一个Dialog 开始的,这样的设置将保证在横竖屏切换时不会出现Activity 在Dialog Dismiss 之前finish,从而避免造成潜在隐患,使得整个app 更安全,稳定。

至于你加没加,反正我加了。

三、添加其他资源文件

我们下载的SDK中的资源文件有:Drawable, drawable-hdpi, layout, values, anim 只需要拷贝到project 的对应目录下即可。

四、配置分享平台(可选)

目前友盟支持的分享的平台是:新浪微博,人人网和腾讯微博, 如果只需要用到其中的某一个或某两个平台, 只需要在umeng_share_parameters.xml(该文件在SDK提供的资源文件, values文件夹下)将不需要的平台设为”close”即可(默认三个平台都是开启的)。例如不需要用到分享到腾讯微博的功能,则将umeng_share_tenc 设为”close”即可。

123456
[xml]?view plaincopyprint?
  1. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><resources<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  2. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><string</span>?<span?style="color:#000066">name</span>=<span?style="color:#ff0000">"umeng_share_renr"</span><span?style="color:#000000;?font-weight:bold">></span></span>open<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></string<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  3. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><string</span>?<span?style="color:#000066">name</span>=<span?style="color:#ff0000">"umeng_share_sina"</span><span?style="color:#000000;?font-weight:bold">></span></span>open<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></string<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  4. ????<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"><string</span>?<span?style="color:#000066">name</span>=<span?style="color:#ff0000">"umeng_share_tenc"</span><span?style="color:#000000;?font-weight:bold">></span></span>close<span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></string<span?style="color:#000000;?font-weight:bold">></span></span></span>??
  5. ????…??
  6. <span?style="color:#009900"><span?style="color:#000000;?font-weight:bold"></resources<span?style="color:#000000;?font-weight:bold">></span></span></span>??

五、其他复杂的功能请参看官方文档。

六、下面我们来看一下最最基本的分享文字消息的使用方法,以我的应用为示例:

在需要打开分享功能的地方加入下列使用代码即可:

1
[java]?view plaincopyprint?
  1. UMSnsService.<span?style="color:#006633">share</span><span?style="color:#009900">(</span>BJTUerActivity.<span?style="color:#000000;?font-weight:bold">this</span>,?<span?style="color:#0000ff">"测试同步功能!"</span><span?style="color:#009900">)</span><span?style="color:#339933">;</span>??

这样点击后,将会弹出以下界面:

哈哈,接下来就是认证了。因为我已经认证过了,所以这一步略过。然后就是分享界面:

?

[email protected]

当然,除了分享文字外,还可以分享图片加文字(如拍张照后直接分享),具体使用方法请参考官方文档。

最后再提一点,关于用户的所有分享操作在友盟上开发者是可以看到所有统计数据的,如下图(我的应用只有我在测试,所以图表比较寒酸…):

  相关解决方案