很多朋友在开发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”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
- <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>
- <span style="color:#009900"> <span style="color:#000066">android:screenOrientation</span>=<span style="color:#ff0000">"unspecified"</span></span>
- <span style="color:#009900"> <span style="color:#000066">android:windowSoftInputMode</span>=<span style="color:#ff0000">"adjustResize"</span></span>
- <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>
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"></activity<span style="color:#000000; font-weight:bold">></span></span></span>
- <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>
- <span style="color:#009900"> <span style="color:#000066">android:theme</span>=<span style="color:#ff0000">"@style/Theme.IOSched"</span></span>
- <span style="color:#009900"> <span style="color:#000066">android:windowSoftInputMode</span>=<span style="color:#ff0000">"stateVisible|adjustResize"</span></span>
- <span style="color:#009900"> <span style="color:#000066">android:screenOrientation</span>=<span style="color:#ff0000">"unspecified"</span></span>
- <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>
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"><intent-filter<span style="color:#000000; font-weight:bold">></span></span></span>
- <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>
- <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>
- <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>
- <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>
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"></intent-filter<span style="color:#000000; font-weight:bold">></span></span></span>
- <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标签:
1
2
3
4
5
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 style="color:#000000; font-weight:bold">></span></span>
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"><intent-filter<span style="color:#000000; font-weight:bold">></span></span></span>
- …
- <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>
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"></intent-filter<span style="color:#000000; font-weight:bold">></span></span></span>
- <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
|
- <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:
1
2
3
4
|
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"><application</span> …<span style="color:#000000; font-weight:bold">></span></span>
- …
- <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>
- <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, 以用于分享的统计。
1
2
3
4
5
6
|
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"><manifest</span> …<span style="color:#000000; font-weight:bold">></span></span>
- …
- <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>
- <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>
- <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>
- <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”即可。
1
2
3
4
5
6
|
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"><resources<span style="color:#000000; font-weight:bold">></span></span></span>
- <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>
- <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>
- <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>
- …
- <span style="color:#009900"><span style="color:#000000; font-weight:bold"></resources<span style="color:#000000; font-weight:bold">></span></span></span>
|
五、其他复杂的功能请参看官方文档。
六、下面我们来看一下最最基本的分享文字消息的使用方法,以我的应用为示例:
在需要打开分享功能的地方加入下列使用代码即可:
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>
|
这样点击后,将会弹出以下界面:
哈哈,接下来就是认证了。因为我已经认证过了,所以这一步略过。然后就是分享界面:
其中还可以插入表情、话题或者@某人等。
当然,除了分享文字外,还可以分享图片加文字(如拍张照后直接分享),具体使用方法请参考官方文档。
最后再提一点,关于用户的所有分享操作在友盟上开发者是可以看到所有统计数据的,如下图(我的应用只有我在测试,所以图表比较寒酸…):
相关推荐
友盟分享android Demo和SDK
友盟多功能AndroidDemo___下载.zip
友盟 社会化和 Common 组件的 android SDK。帮助应用或游戏快速具备国内外多平台分享、第三方登录功能,SDK包最小,集成成本最低,平台覆盖最全,助力产品开发与推广。
android友盟推送3.1.0SDK
android友盟微信微博分享
在项目中集成bugly时报了jar冲突,后来发现是因为友盟分享时引入了open_sdk_r5599.jar和bugly的jar冲突了,但是又不能没有open,所有使用了这个版本进行替换,已完美替换,不会影响友盟分享业务。
友盟分享iOSsdk的使用,qq平台上分享的步骤,过程
umeng sdk 友盟统计分析 节约开发成本。云端聚合QQ空间、新浪微博、腾讯微博、人人网、豆瓣和微信 社交平台的分享功能; 快速获得全面功能。支持使用六大平台账户登录,并提供评论、喜欢等其他社交 功能; 详尽的...
友盟分享sdk,包括qq,qq空间,微信,微信朋友圈,微博的分享sdk
友盟+ 统计SDK/推送SDK/分享SDK 三合一 Demo项目
Android-友盟第三方登录、分享实现,需要的童鞋打包带走,请叫我雷锋。
这个是我在网上找到的第三方登陆和分享功能的Demo,只需替换里面的友盟appId和qq,微信,微博的appId就可以实现第三方登陆和分享
Android-友盟第三方登录、分享实现
Android友盟集成QQ、微信、微博等第三方登录与分享 Dome
友盟初始化和通用接口 1.SDK集成 1.1自动集成 通过在工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化基础库和统计SDK。 在Gradle依赖中添加:
关于友盟分享和登录的集成
使用友盟SDK实现新浪微博第三方登录, 想要实现的快快来下。
20160706_友盟+_菜鸟大数据赋能互联网+物流.pdf!
友盟sdk的反编译版本,umeng-analytics-8.1.3.jar
友盟API 友盟OpenAPI 友盟统计 友盟统计API 《友盟 open api.pdf》文档