目录 1. 百度贴吧单吧SDK简介1.1 目的让第三方移动应用能便捷地嵌入百度贴吧单吧服务 1.2 支持平台Android 2.1及以上 1.3. 集成方式以library工程方式 2. 单吧SDK功能访问贴吧frs(贴子列表)页,pb(贴子详情)页; 发表主题贴与吧友进行讨论,回复吧友的贴子; 查看吧友互动消息; 3. SDK组成单吧SDK是以lib库的方式对外提供服务的,它的主要组成包括一些libs库和资源文件: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps7049.tmp.jpg 其中android-support-v4.jar的版本是r4,如有重合,应保证保留r4以上版本。 4. SDK使用方式使用单吧SDK,需要添加对SDK工程的引用,如下图: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps704A.tmp.jpg 添加完引用后,需要将SDK工程的AndroidManifest.xml文件中的部分代码添加到自身APP的AndroidManifest.xml文件中,包括如下: 注册Activity <activity android:name="com.baidu.tieba.album.AlbumActivity" android:configChanges="orientation|keyboardHidden|navigation" android:screenOrientation="portrait" /> <activity android:name="com.baidu.tieba.frs.FrsFragmentActivity" android:configChanges="orientation|keyboardHidden|navigation" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize|stateHidden" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <activity android:name="com.baidu.tieba.pb.main.PbFragmentActivity" android:configChanges="orientation|keyboardHidden|navigation" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize|stateHidden" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <activity android:name="com.baidu.tieba.image.ImageViewerActivity" android:configChanges="orientation|keyboardHidden|navigation" android:process=":remote" > </activity> 注册service <service android:name="com.baidu.tieba.service.ClearTempService" android:enabled="true" android:process=":remote" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <service android:name="com.baidu.tieba.service.TiebaSyncService" android:enabled="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <service android:name="com.baidu.tieba.FileDownloader" android:enabled="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <service android:name="com.baidu.tieba.service.TiebaActiveService" android:enabled="true" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <service android:name="com.baidu.tbadk.core.service.TiebaPrepareImageService" android:enabled="true" android:process=":remote" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <service android:name="com.baidu.tbadk.core.diskCache.ImagesInvalidService" android:enabled="true" android:process=":remote" > </service> <service android:enabled="true" android:name="com.baidu.tieba.service.TiebaFullUpdateService" android:process=":remote"> <intent-filter> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </service> 注册receiver <receiver android:name="com.baidu.tbadk.core.diskCache.ImagesInvalidReceiver" > </receiver> <receiver android:name="com.baidu.tieba.service.SignAlertReceiver" android:enabled="true" > <intent-filter> <action android:name="com.baidu.tieba.broadcast.signalert" /> <data android:scheme="tieba_sign" /> </intent-filter> </receiver> <receiver android:name="com.baidu.tieba.service.SyncLoginoutReceiverFromRemote" > <intent-filter> <action android:name="com.baidu.tiebadanba.broadcast.syncLoginFromRemote" /> <action android:name="com.baidu.tiebadanba.broadcast.syncLogoutFromAS" /> </intent-filter> </receiver> <receiver android:name="com.baidu.tieba.service.SyncLoginReceiverForAs" android:process=":remote" > <intent-filter> <action android:name="com.baidu.tiebadanba.broadcast.syncLoginFromAS" /> </intent-filter> </receiver> <receiver android:name="com.baidu.tieba.service.SyncLogoutReceiverForAs" android:process=":remote" > <intent-filter> <action android:name="com.baidu.tiebadanba.broadcast.syncLogoutFromAS" /> </intent-filter> </receiver> 权限需求: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.CAMERA" > </uses-permission> <uses-permission android:name="android.permission.VIBRATE" > </uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" > </uses-permission> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 5、接口说明:接口统一封装到com.baidu.tiebasdk.TiebaSDK类中。 其中(1),(2)必须在APP的Application里初始化。 (1)TiebaSDK.init(Application app); 初始化方法,需要在贴吧SDK所运行进程调用,完成初始化操作。 (2) TiebaSDK.setFrom(String from) 设置渠道名称。from为标识APP唯一性的英文字符串,例如:bdGame (3) TiebaSDK.setImageMaxUsedMemoryInMB(int maxUseMemoryInMB, Context context) 设置SDK图片占用的内存大小,防止应浏览较多图片没有及时释放内存导致OM,单位为MB,如果不调用此方法内部默认最大为10M (4) TiebaSDK.openBar(Context context ,String barName) 全屏方式打开某个吧,需要在init函数之后调用。 (5) TiebaSDK.openBar(FragmentActivity activity, int containerId, String barName) 自定义显示宽高的方式打开某个吧,需要在init函数之后调用,其中activity代表贴吧的Fragment Attach到的activity,containerId为activity布局中fragment的id。 (6) TiebaSDK.openThread(Context context, String threadId) 打开贴子页面,需要在init函数之后调用,threadId为贴子的id (7) Tieba.getBarData(String bar, boolean hasGoodOnly, int pn, int rn) 获取某个吧的贴子数据.其中hasGoodOnly表示是否只取精华贴,pn表示页数,rn表示条数 6、账号互通贴吧SDK可以和使用百度Pass账号体系的应用进行同步登录/登出。 原理是使用广播来共享bduss和ptoken。在双方中任何一方中,用户登录/登出成功之后,需要发送一个预先定义好的广播来通知另一方更新登录状态,接受方使用广播出来的bduss和ptoken进行验证,如果成功则在接受方也有同样的登录用户。 另外有一点需要注意的是,对于有用户名的账号,需要把用户名也通过广播发送过来,因为贴吧的很多操作都需要用户有用户名才能正常使用,当然如果用户没有用户名也没有关系,贴吧SDK会引导用户填写一个用户名。 贴吧提供了两个简单的方法来发送广播。 (8) TiebaSDK.syncLogin(String name, String bduss, String ptoken, Context context) 广播登录,传入用户名,bduss,ptoken。 (9) TiebaSDK.syncLogout(Context context) 广播登出 7、注意事项1.对原app影响 集成贴吧SDK之后,原APP的APK文件会增大2.7M。 2. 自定义屏幕宽高设置策略 由于自定义屏幕框情况下,用户可通过限制宽高控制显示界面的大小,建议宽 >= 屏幕宽度的70%,高度 >= 屏幕高度的10%。 3. 半屏特殊策略 Activity需要 extends FragmentActivity ,并且按照Demo中的方式,重写onActivityResult方法和onKeyDown方法。【详见Demo】 [size=12.0000pt]4. 获取贴子数据的返回结果 全部贴子/精华贴子列表(按时间排序),返回结果是json串,需自行对其进行解析。 /** * 分页获取吧贴子数据 * @param bar 吧名 * @param hasGoodOnly 是否只取精华贴 * @param pn 页数 * @param rn 条数 * @return json数据 */ public static String getBarData(String bar, boolean hasGoodOnly, int pn, int rn) 返回结果(json串): {
error_code uint32_t //错误号
error_msg string //错误信息
forum:{ //吧信息
id uint32_t //吧名
name string //吧ID
is_exists uint32_t //是否能访问
member_num uint32_t //会员数
thread_num uint32_t //主题贴数,如果是明星吧,返回明星吧的累计发贴数
post_num uint32_t //回复贴数
avatar string //吧头像地址
slogan string //吧简介
}
user:{ //用户信息
is_login uint32_t //是否登录
id uint32_t //用户ID
name string //用户名
name_show string //认证用户名称
portrait string //头像串
type uint32_t //0为匿名用户,1为登录用户,2为认证用户
userhide uint32_t //用户是否被屏蔽,1表示屏蔽
no_un uint32_t //用户是否无U用户 1是 0不是
}
thread_list[]:{ //实际展示的主题list
id uint32_t //主题ID
title string //标题
reply_num uint32_t //回贴数
last_time_int uint32_t //最后回复时间时间戳
is_top uint32_t //置顶
is_global_top uint32_t //全局运营置顶贴
is_good uint32_t //加精
is_pic uint32_t //老图片贴
is_notice uint32_t //1:全吧公告贴
is_ntitle uint32_t //是否是无标题贴,1是,0非
is_membertop uint32_t //是否是会员置顶贴
first_post_id uint32_t //首楼的post_id
title_link string //公告贴链接
author string //用户名
abstract[]:{ //摘要
type uint32_t //文本类型:0普通文本;3图片
text string //摘要文本
}
media[]:{ //摘要图片等
type uint32_t //多媒体类型
small_pic string //小图片
big_pic string //大图片
src_pic string //pb图片
water_pic string //瀑布流图片
}
}
page:{ //翻页信息
total_count uint32_t //总数
total_page uint32_t //总页数
page_size uint32_t //每页条数
current_page uint32_t //当前页码
offset uint32_t //数据偏移量
has_prev uint32_t //是否有前一页
has_more uint32_t //是否有下一页
}
anti:{ //发贴权限信息
tbs string //发贴tbs
ifpost uint32_t //是否允许发贴
}
} 5、此版本不支持横竖屏切换 如果已经打开贴吧的页面,此时进行横竖屏切换会导致页面数据加载失败,或对应的点击事件错位。 api demo 和sdk下载:
上一篇:2017年3月2日签到记录贴 下一篇:百度贴吧API接口,SDK,IOS版(附接口说明) |