一点资讯安卓 SDK

1.SDK 接口介绍

一点资讯 SDK 接口设计包括全局属性,全局接口,业务接口,场景接口等。

1.1 全局属性配置

1.1.1 SDK 初始化

com.yidian.newssdk.NewsFeedsSDK.java 这是 SDK 的配置入口类,目前对外提供了响应的配置方法,开发者可以通过配置

private String mAppKey: SDK 初始化所需要的 APP_KEY

private String mAppId: SDK 初始化所需的 APP_ID

private boolean debug: 是否开启 DEBUG 模式,开启 Debug 模式后会输出更多的 log 信息。

在自定义 Application 的 onCreate 中添加如下代码,初始化我们的 SDK。由于您的应用可能不止一个进程,建议只在主进程初始化我们的 SDK。

SDK 初始化示例:

new NewsFeedsSDK.Builder()
  .setAppId(BuildConfig.APP_ID)
  .setAppKey(BuildConfig.APP_KEY)
  .setContext(getApplicationContext())
  .setDebugEnabled(BuildConfig.DEBUG)
  .build();

您需要在 SDK 初始化代码中传入 APP_ID、APP_KEY。

1.2 场景

1.2.1 支持接入多频道多列表形式

NewsPortalFragment

SDK 目前支持接入方采用多 TAB 的形式接入,SDK 已经对 NewsPortalFragment 进行封装,接入方只需将 NewsPortalFragment 放置在对应的 container 容器中即可,具体调用方式可以参考:com.yidian.geek.page. NewsPortalActivity。

接入代码

fragmentNavi = new NewsPortalFragment();
getSupportFragmentManager().beginTransaction()
                .replace(R.id.portal_container, fragmentNavi)
                .commitNowAllowingStateLoss();

1.2.2 支持单频道单列表的接入方式

NewsListFragment

NewsListFragment 为单列表的 Fragment,接入方式示例具体参考:com.yidian.geek.page.NewsListActivity

NewsListFragment 支持展示自定义的频道列表,接入方需要在构造 NewsListFragment 传入需要配置的频道名称,如:

fragment = NewsListFragment.newInstance("视频集锦");
getSupportFragmentManager().beginTransaction()
 .replace(R.id.portal_container, fragment)
 .commitNowAllowingStateLoss();

1.2.3 View 的形式接入

NewsEmbedFragment

NewsEmbedFragment 支持接入方将信息流插入在接入方的布局中,接入方可根据自己的实际场景需要使用该 Fragment。

NewsEmbedFragment 的构造需要传入频道名及信息流列表卡片的数量,如:

fragment = NewsEmbedFragment.newInstance("推荐", 1);
getSupportFragmentManager().beginTransaction()
 .replace(R.id.portal_container, fragment)
 .commitNowAllowingStateLoss();

具体使用方式请参考:com.yidian.geek.page. NewsViewActivity

1.2.4 对外暴露接口

SDK 提供对外暴露接口或方法的方式,辅助开发者实现一些功能。

1.2.4.1 刷新接口

开发者接入多频道列表或单频道列表过程中,可能需要通过点击底部 Tab 或者其他的方式进行信息流刷新操作,目前 SDK 对外暴露刷新方法来帮助开发者实现刷新操作。

方法原型:

public void refreshCurrentChannel();

说明:对所处的当前频道进行刷新操作。在接入 NewsPortalFragment 或 NewsListFragment 时可以调用此 Fragment 的 refreshCurrentChannel 方法。

2. 客户端集成步骤

2.1 引入 SDK 库

一点资讯开放平台 SDK 以 aar 的形式提供,客户端可以通过 gradle 配置直接引用。

  1. 首先打开根目录下的  build.gradle  进行 jcenter 配置:
buildscript {
 repositories {
  jcenter()
 }
}
allprojects {
 repositories {
  jcenter()
 }
}
  1. 然后打开  app  目录下的  build.gradle  进行如下配置:
dependencies {
 implementation 'com.yidian.android:feeds:+'
}

即可完成.

2.2 声明必要权限

客户端需要在 AndroidManifest.xml 文件中增加 SDK 所需要的访问网络和读写存储空间等权限,代码示例:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />

2.3 需要在混淆的时候 keep 的文件

sdk 提供时已经通过 consumerProguardFile 方式提供混淆文件,所以客户端不需要重新 keep 防止混淆.

一点资讯 iOS SDK

1. SDK 接入指南

1.1 注册申请应用

前往一点资讯开发者平台(http://developer.yidianzixun.com),根据文档创建账号并申请应用。

1.2 开发流程

1.2.1 添加 Framework,配置环境

(1)添加 SDK 到工程中

一点资讯开放平台 SDK 以 framework+bundle 的形式提供,支持 iOS 系统最低版本为 8.0,开发者可以前往一点资讯开发者平台下载最新 SDK 包,下载成功后在工程中导入 YDNewsFeed.framework 和 YDNewsFeedBundle.bundle。

(2)添加依赖 Framework

开发者需要在 Target—>Build Phases —> Link Binary With Libraries 添加以下 Framework:UIKit.framework、Foundation.framework、libsqite3.0tbd

除此之外, SDK 还依赖 AFNetworking 和 SDWebImage 第三方库,可通过 pod 'AFNetworking', '~> 3.0'、pod 'SDWebImage', '~> 4.0’导入,或者前往https://github.com/AFNetworking/AFNetworking、https://github.com/rs/SDWebImage下载

(3)其他注意事项

避免静态库中类加载不全造成崩溃,开发者在 Target—>Bulid Setting—>Linking—>Other Link Flags 选项中添加-Ojbc。

SDK 不支持 bitcode,开发者须在 Target—>Bulid Setting—>Build Options —>Enable Bitcode 选项置为 NO。

SDK 中包含 http 请求,开发者须在 info.plist 文件中,将 App Transport Security Setting 中 Allow Arbitrary Loads 设置为 YES。

1.2.2 初始化 SDK

程序启动时,在 appDelegate.m 文件中,初始化 SDK。

代码示例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [YDNewsFeedSDK initializeWithAppId:APPID appKey:APPKEY];
    return YES;
}

调用方法:

+(void)initializeWithAppId:(NSString * __nonnull)appId appKey:(NSString * __nonnull)appKey;

参数说明:

参数名 类型 说明
appId NSString 接入方应用appId,通过一点资讯开放平台申请
appKey NSString 接入方应用appKey,通过一点资讯开放平台申请

2. 应用场景说明

一点资讯开放平台 SDK 支持多频道列表和单频道列表两种信息流页面。信息流页面需要依赖 navigationContoller 处理多级页面跳转,请开发者通过 navigationContoller pushViewController 方式打开信息流页面,或者通过 navigationContoller setViewControllers 等方法将信息流页面放在 navigationContoller 容器中。

一点资讯 SDK 信息流页面不支持旋转,请将页面旋转置为 NO,或者由信息流页面实现。

2.1 列表页面协议说明

信息流频道列表页面实现了 YDNewsFeedViewControllerProtocol 协议。

2.1.1 刷新页面数据

开发者可通过调用实现了 YDNewsFeedViewControllerProtocol 的频道列表页面的 userRefreshData 方法刷新频道列表数据.

调用方法:

- (void)userRefreshData;

2.2 多频道列表页面说明

2.2.1 接入方法说明

SDK 目前支持开发者采取多频道列表的形式接入,开发者可在开放平台配置频道列表及顺序。开发者可通过 YDNewsListSlideConfiguration 类在信息流页面初始化时配置信息流页面样式。

调用方法:

+(UIViewController<YDNewsFeedViewControllerProtocol> * __nonnull)YDNewsListSlideViewControllerWithConfiguration:(YDNewsListSlideConfiguration *)configuration;

参数说明:

参数名 类型 说明
configuration YDNewsListSlideConfiguration 信息流页面配置,详细参考2.2.2

返回说明:

类型 说明
UIViewController 实现YDNewsFeedViewControllerProtocol的信息流页面

开发者可在 TabBarController 中接入多频道列表,接入示例可参照 demo 中 DemoTabBarController 的实现,开发者也可以通过获取多频道列表页面 view,实现自定义页面开发,接入示例可参照 demo 中 CustomNewsListSlideViewController 的实现.

2.2.2 多频道列表页面配置说明

开发者可通过 YDNewsListSlideConfiguration 进行信息流页面配置,仅在初始化时生成有效.

属性名 类型 说明
topLayoutHeight CGFloat 页面顶部高度,默认为status bar height。开发者有定制需求时,可获取viewController的view,设置topLayoutHeight,进行自定义开发。
contentInset UIEdgeInsets 当页面scrollView因为status bar, search bar, navigation bar, toolbar, tab bar 展示不正常时,此处开放权限相应调整

2.3 单频道列表页面说明

2.3.1 接入方法说明

SDK 目前支持开发者采取单频道列表的形式接入,开发者需要传入配置的频道名称。开发者可通过 YDNewsListConfiguration 类在信息流页面初始化时配置信息流页面样式。

调用方法:

+(UIViewController<YDNewsFeedViewControllerProtocol> * __nonnull)YDNewsListViewControllerWithChannelName:(NSString * __nonnull)channelName configuration:(YDViewControllerConfiguration *)configuration;

参数说明:

参数名 类型 说明
channelName NSString 频道名,默认为“推荐”频道
configuration YDNewsListConfiguration 信息流页面配置,详细参考2.3.2

返回说明:

类型 说明
UIViewController 实现YDNewsFeedViewControllerProtocol的信息流页面

开发者可在 TabBarController 中接入单频道列表,接入示例可参照 demo 中 DemoTabBarController 的实现,开发者也可以通过获取单频道列表页面 view,实现自定义页面开发,接入示例可参照 demo 中 CustomNewsListViewController 的实现。CustomNewsListViewController 类中还包含 push 方式打开单频道列表场景代码示例。

2.3.2 信息流页面配置

开发者可通过 YDViewControllerConfiguration 进行信息流页面配置,仅在初始化时生成有效.

属性名 类型 说明
hideNavgationBar BOOL 页面默认隐藏navigationController的导航栏,展示一点自定义导航栏
hideBackBtn BOOL 是否隐藏返回按钮,导航栏不隐藏时有效,默认不隐藏,当页面作为rootViewController时,强制隐藏返回按钮
navigationBarTitle NSString 导航栏标题,导航栏不隐藏时展示,默认展示频道名,只影响当前配置页面
contentInset UIEdgeInsets 当页面scrollView因为status bar, search bar, navigation bar, toolbar, tab bar 展示不正常时,此处开放权限相应调整

3. SDK 配置说明

3.1 配置 debugLog 开关

开启或关闭 debug 日志

调用方法:

+ (void)enableYDDebugLog:(BOOL)enable;