小说内容接入文档 V1.2.4.05251

1、概述

尊敬的开发者您好,欢迎使用小说内容SDK,通过本文档您可以在几分钟之内轻松完成小说内容SDK的集成。

2、SDK的导入

1.推荐使用pod命令 (使用xcframework打包,需cocoapods版本1.9.0及以上版本,需ADSuyiSDK 3.1.2及以上版本)

pod 'ADSuyiSDK','~>3.2.2.0'
pod 'ADSuyiStarRd'

2.手动导入

ADSuyiSDK手动导入参考https://github.com/ADSuyi/ADSuyiSDKDemo-iOS

ADSuyiStarRd下载地址:http://121.41.108.203/adsuyi_kit/adsuyistarrd

依赖库下载地址:https://github.com/mcllzx/StarRdSDK

下载文件解压后将.xcframework导入项目。

3、工程环境配置

1.打开项目的 app target,查看 Build Settings 中的 Linking-Other Linker Flags 选项,确保含有 -ObjC 一值, 若没有则添加。

2.在项目的 app target 中,查看 Build Settings 中的 Build options - Enable Bitcode 选项, 设置为NO。

3.在info.plist添加支持http访问字段

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

4.后台播放小说需在target->info->Custom iOS Target Properties 中添加Required background modes并在其中增加 App plays audio

4、SDK的初始化

// ADSuyiSDK初始化
[ADSuyiSDK initWithAppId:@"3437764" completionBlock:^(NSError * _Nonnull error) {
    if (error) {
        NSLog(@"SDK 初始化失败:%@", error.localizedDescription);
    }
}];

注意:初次初始化SDK 可能因网络权限获取等原因导致SDK初始化失败,SDK初始化失败,接入小说内容控制器将无法显示数据。建议在接入时对SDK初始化状态做判断。

5、小说内容SDK

// 内容控制器类型
typedef NS_ENUM(NSInteger, ADSuyiContainVcType) {
    ADSuyiContainVcTypeTabBar = 0,    //作为Tabbar子控制器
    ADSuyiContainVcTypePush,          //push方式推出内容控制器
    ADSuyiContainVcTypePresent,       //present方式推出内容控制器
};

@interface ADSuyiSDKContainAd : NSObject

/// 是否返回了有效的控制器
/// @param containVcType 需要的内容控制器类型
+ (BOOL)isValidControllerWithType:(ADSuyiContainVcType)containVcType;

/// 获取内容控制器 有可能为nil 故应使用isValidControllerWithType:判断
/// @param containVcType 需要的内容控制器类型
+ (nullable UIViewController *)containViewControllerWithType:(ADSuyiContainVcType)containVcType withError:(NSError **)error;

/// 小说后台播放器控制
/// 继续播放
+ (void)replay;
/// 暂停播放
+ (void)pause;
/// 播放上一曲
+ (void)last;
/// 播放下一曲
+ (void)next;
/// 小窗口暂停
+ (void)smallWindowPause;
@end

6、接入方式


// 获取小说内容控制器 3种方式
   //1、作为UITabBarController的子控制器 需要ADSuyiContainVcTypeTabBar类型
                NSError *error = nil;
                // 判断所需类型控制器是否有效
                if ([ADSuyiSDKContainAd isValidControllerWithType:ADSuyiContainVcTypeTabBar]) {
            UIViewController *containViewController = [ADSuyiSDKContainAd containViewControllerWithType:ADSuyiContainVcTypeTabBar withError:&error];
             // 如果无错误
          if (!error)
              [tabBarVc addChildViewController:containViewController];
        }

   //2、以pushViewController:animated:方式推入小说控制器 需要ADSuyiContainVcTypePush类型
                NSError *error = nil;
                // 判断所需类型控制器是否有效
                if ([ADSuyiSDKContainAd isValidControllerWithType:ADSuyiContainVcTypePush]) {
            UIViewController *containViewController = [ADSuyiSDKContainAd containViewControllerWithType:ADSuyiContainVcTypePush withError:&error];
             // 如果无错误
          if (!error)
              [self.navigationController pushViewController:containViewController animated:YES];
        }        
   //3、以presentViewController:animated:completion:方式弹出模态视图 需要ADSuyiContainVcTypePresent类型
                NSError *error = nil;
                // 判断所需类型控制器是否有效
                if ([ADSuyiSDKContainAd isValidControllerWithType:ADSuyiContainVcTypePresent]) {
            UIViewController *containViewController = [ADSuyiSDKContainAd containViewControllerWithType:ADSuyiContainVcTypePresent withError:&error];
             // 如果无错误
          if (!error)
              [self presentViewController:containViewController animated:YES completion:nil];
        } 

// 后台控制小说播放器 在AppDelegate中实现以下方法
- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [application beginReceivingRemoteControlEvents];
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    [application endReceivingRemoteControlEvents];
}

#pragma mark - 小说后台播放控制
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlPlay: {//恢复播放
            [ADSuyiSDKContainAd replay];
        }
            break;
        case UIEventSubtypeRemoteControlPause: {//暂停
            [ADSuyiSDKContainAd pause];
            break;
        }
        case UIEventSubtypeRemoteControlPreviousTrack: {//上一曲
            [ADSuyiSDKContainAd last];
            break;
        }
        case UIEventSubtypeRemoteControlNextTrack: {//下一曲
            [ADSuyiSDKContainAd next];
            break;
        }
        case UIEventSubtypeRemoteControlTogglePlayPause: {//小窗口暂停
            [ADSuyiSDKContainAd smallWindowPause];
            break;
        }
        default:
            break;
    }
}

results matching ""

    No results matching ""