AIHelp客服功能接入说明

1.接入须知

1.接入龙图iOSSDK的游戏及应用的iOS客户端开发者。
2.使用此文档内接口,需要先接入龙图iOSSDK(详情查看龙图iOSSDK文档,当前支持龙图官网最新版本)。
3.接入龙图iOSSDK后,需要配置AIHELPSDK需要的依赖库。

注:AIHELP iOS终端SDK接入教程,只涉及SDK的使用方法。

1.0 开发要求


  • iOS 9.0 及以上版本

  • XCode 12 及以上版本

  • 1.1 申请你的AppID

    apiKey:必传参数,无需配置,联系运营支持获取参数的配置文件放入工程即可。

    domain:必传参数,无需配置,联系运营支持获取参数的配置文件放入工程即可。

    appId: 必传参数,无需配置,联系运营支持获取参数的配置文件放入工程即可。

    1.2 下载SDK包和示例Demo

    下载对应demo

    1.3 开发环境配置

    1、需要引入的三方库

    2、必须在 Xcode Build Settings 里面 Other Linker Flags 设置值 -ObjC。
    该项如果设置错误,运行时就会出现异常:unrecognized selector sent to instance exception

    3、添加依赖库,在项目设置target -> General ->Linked Frameworks and Libraries添加如下依赖库:

    ​ libsqlite3.tbd
    ​ libresolv.tbd
    ​ WebKit.framework

    4、设置SDK所需权限, 在项目工程的 info.plist 中增加1个权限:
    Privacy - Photo Library Usage Description 需要访问您的相册权限,才能将图片上传反馈给客服

    2.SDK初始化

    接入龙图BaseSDK初始化即可

    ———————- C++接口———————-

    3 功能模块接入

    3.1 客服模块

    3.1.1 展示客服默认页面

    接口说明
    展示客服默认页面

    1. /**
    2. * 展示客服默认页面
    3. */
    4. void LTAIHelpShowConversation();

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpShowConversation();

    3.1.2 展示客服自定义页面

    接口说明
    展示客服自定义页面

    1. /**
    2. * 展示客服
    3. * @param conversationConfig 参数
    4. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    5. * @ humanSupport 机器人常显人工入口 (true / false)
    6. * @ message 人工客服自定义欢迎语 (自定义字符串)
    7. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    8. */
    9. void LTAIHelpShowConversation(id conversationConfig);

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临2222";(可选后台配置欢迎语)
    5. helpConfig.storyNode = @"故事线";
    6. LTGameSDK::GetInstance().LTAIHelpShowConversation(helpConfig);

    3.2 FAQ模块

    3.2.1 默认FAQ页面

    接口说明
    默认FAQ页面

    1. void LTAIHelpShowAllFAQSections();

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpShowAllFAQSections();

    3.2.2 自定义FAQ页面

    接口说明
    自定义FAQ页面

    1. /**
    2. * 你可以通过配置来展示分类列表,支持 FAQ 的搜索,并支持在合适的位置展示客服系统入口。
    3. * @param moment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显2/不显1/点踩后显示3)
    4. * @param config FAQ 模块相关的配置信息
    5. * [dir]
    6. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    7. * @ humanSupport 机器人常显人工入口 (true / false)
    8. * @ message 人工客服自定义欢迎语 (自定义字符串)
    9. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    10. */
    11. void LTAIHelpShowAllFAQSections(int momet,id conversationConfig);

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临7777";
    5. LTGameSDK::GetInstance().LTAIHelpShowAllFAQSections(2, helpConfig);

    3.2.3 FAQ分类页面

    接口说明
    FAQ分类页面

    1. /**
    2. * 不同于展示全部分类列表,AIHelp 支持在某些特殊场景下单独展示某个 FAQ 分类
    3. * @param sectionId 必传参数。 此参数为要展示的 FAQ 分类的分类 ID,
    4. */
    5. void LTAIHelpShowFAQSection(const char* sectionId);

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpShowFAQSection("37891");

    3.2.4 自定义FAQ分类页面

    接口说明
    自定义FAQ分类页面

    1. /**
    2. * 不同于展示全部分类列表,AIHelp 支持在某些特殊场景下单独展示某个 FAQ 分类
    3. * @param sectionId 必传参数。 此参数为要展示的 FAQ 分类的分类 ID,
    4. * @param moment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显2/不显1/点踩后显示3)
    5. * @param config FAQ 模块相关的配置信息
    6. * @ showConversationMoment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显/不显/点踩后显示)
    7. * [dir]
    8. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    9. * @ humanSupport 机器人常显人工入口 (true / false)
    10. * @ message 人工客服自定义欢迎语 (自定义字符串)
    11. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    12. */
    13. void LTAIHelpShowFAQSection(const char* sectionId, int moment, id conversationConfig);

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临6666";
    5. LTGameSDK::GetInstance().LTAIHelpShowFAQSection("37891", 1, helpConfig);

    3.2.5 FAQ特定页面

    接口说明
    FAQ特定页面

    1. /**
    2. * 展示某个特定的 FAQ 问题。
    3. * @param faqId 展示的特定 FAQ 的 ID
    4. */
    5. void LTAIHelpShowSingleFAQ(const char* faqid);

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpShowSingleFAQ("276");

    3.2.6 自定义FAQ特定页面

    接口说明
    自定义FAQ特定页面

    1. /**
    2. * 展示某个特定的 FAQ 问题。
    3. * @param faqId 展示的特定 FAQ 的 ID
    4. * @param moment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显2/不显1/点踩后显示3)
    5. * @param config FAQ 模块相关的配置信息
    6. *
    7. * [dir]
    8. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    9. * @ humanSupport 机器人常显人工入口 (true / false)
    10. * @ message 人工客服自定义欢迎语 (自定义字符串)
    11. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    12. */
    13. void LTAIHelpShowSingleFAQ(const char* faqid,int moment,id conversationConfig);

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临7777";
    5. LTGameSDK::GetInstance().LTAIHelpShowSingleFAQ("276", 1, helpConfig);

    3.3 运营模块

    3.3.1 默认运营模块

    接口说明
    默认运营模块

    1. /**
    2. * 通过调用此方法调起 AIHelp 运营模块。
    3. */
    4. void LTAIHelpShowOperation();

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpShowOperation();

    3.3.2 自定义运营模块

    接口说明
    自定义运营模块

    1. /**
    2. * 通过调用此方法调起 AIHelp 运营模块。
    3. * @param selectIndex 运营模块默认选中页签 int(>=0)
    4. * @param conversationTitle 运营模块机器人客服页签的标题
    5. * @param config 运营模块的定制化配置。
    6. *
    7. *
    8. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    9. * @ humanSupport 机器人常显人工入口 (true / false)
    10. * @ message 人工客服自定义欢迎语 (自定义字符串)
    11. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    12. */
    13. void LTAIHelpShowOperation(int selectIndex, const char* conversationTitle, id conversationConfig);

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentHumanSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = false;
    4. LTGameSDK::GetInstance().LTAIHelpShowOperation(INT_MAX, "专门的标题", helpConfig);

    4 其他功能

    4.1 用户退出

    接口说明
    用户退出

    1. /**
    2. * 用户退出登录时调用此方法告知 AIHelp,保证游客/用户信息的准确性。
    3. */
    4. void LTAIHelpResetUserInfo();

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpResetUserInfo();

    4.2 更新用户信息

    接口说明
    更新用户信息

    1. /**
    2. * 更新用户信息
    3. * @param roleID 角色ID
    4. * @param roleName 角色名称
    5. * @param roleServerId 角色服务器ID
    6. * @param userTages 用户标签 支持多个标签 默认为空 多个标签之间以「,」分隔,默认为空
    7. * @param customData 自定义数据 格式:{“key”:“value”, “key”:“value”} ,默认为空
    8. * @param isSyncCrmInfo 是否将当前用户同步到 CRM
    9. * 设置推送参数
    10. * AIHelpTokenPlatformAPNS = 1, // Apple APNS
    11. * AIHelpTokenPlatformFirebase = 2, // firebase-FCM
    12. * AIHelpTokenPlatformJpush = 3, // Jpush
    13. * AIHelpTokenPlatformGeTui = 4, // GeTui
    14. * @param pushToken 用户的推送标识,需要在游戏集成的推送平台获取
    15. * @param pushPlatform AIHelp 支持四个推送平台,分别是 APNs、FireBase、极光以及个推。
    16. */
    17. void LTAIHelpUpdateUserInfo(const char* roleID, const char* roleName, const char* roleServerId,const char* pushToken, int pushPlatform, const char* userTages, const char* customData ,bool isSyncCrmInfo);

    接入方法

    1. LTGameSDK::GetInstance(). LTAIHelpUpdateUserInfo("roleID", "roleName", " roleServerId","pushToken",pushPlatform, "userTages", "customData" , isSyncCrmInfo);

    4.3 屏幕设置

    接口说明
    屏幕设置

    1. /**
    2. * 你可以根据应用的具体的场景来控制 SDK 的屏幕方向、是否全屏展示等
    3. * @param interfaceOrientationMask 屏幕方向类型
    4. */
    5. void LTAIHelpSDKInterfaceOrientationMask(int interfaceOrientationMask);

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpSDKInterfaceOrientationMask(UIInterfaceOrientationMaskPortrait);

    4.4 设置推送参数(废弃)

    接口说明
    屏幕设置

    1. /**
    2. * 设置推送参数
    3. * AIHelpTokenPlatformAPNS = 1, // Apple APNS
    4. * AIHelpTokenPlatformFirebase = 2, // firebase-FCM
    5. * AIHelpTokenPlatformJpush = 3, // Jpush
    6. * AIHelpTokenPlatformGeTui = 4, // GeTui
    7. * @param pushToken 用户的推送标识,需要在游戏集成的推送平台获取
    8. * @param pushPlatform AIHelp 支持四个推送平台,分别是 APNs、FireBase、极光以及个推。
    9. */
    10. void LTAIHelpSetPushTokenAndPlatform(const char* pushToken, int pushPlatform);

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpSetPushTokenAndPlatform("pushToken", 1);

    4.5 上传需要查看的日志

    接口说明
    上传需要查看的日志

    1. /**
    2. * 上传需要查看的日志
    3. * 上传日志信息, 日志需要研发自己生成。
    4. * @param path 日志日志
    5. */
    6. void LTAIHelpSetUploadLogPath(const char* path);

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpSetUploadLogPath("path");

    4.6 当前展示的是否为 AIHelp 页面

    接口说明
    当前展示的是否为 AIHelp 页面

    1. /**
    2. * 当前展示的是否为 AIHelp 页面
    3. */
    4. bool LTAIHelpISAIHelpShowing();

    接入方法

    1. bool isShow = LTGameSDK::GetInstance().LTAIHelpISAIHelpShowing();

    4.7 设置SDK显示模式

    接口说明
    设置SDK显示模式

    1. /**
    2. * 设置SDK显示模式 ( iOS only )
    3. * @param mode
    4. * 0: 跟随系统
    5. * 1: 日间模式
    6. * 2: 黑暗模式
    7. */
    8. void LTAIHelpSetSDKAppearanceMode(int mode);

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpSetSDKAppearanceMode(1);

    4.8 设置未读消息回调监听

    接口说明
    设置未读消息回调监听

    1. /**
    2. * 设置未读消息回调监听
    3. * @param count 未读消息数量
    4. */
    5. void setFeedBackHelpCallBackLinstener(void (* pfunc)(int count));

    接入方法

    1. //设置监听
    2. LTGameSDK::GetInstance().setFeedBackHelpCallBackLinstener(FeedBackHelpLinstener);
    3. //监听回调
    4. void FeedBackHelpLinstener(int count){
    5. NSLog(@"FeedBackHelpLinstener 未读消息数量:%d",count);
    6. [mLTAIHelpController showMessage:[NSString stringWithFormat:@"未读消息数量:%d",count]];
    7. }

    4.9 网络状态监测

    接口说明
    注意:网络信息收集功能在 AIHelp 后台有开关及标签配置,在具体接入之前,请确定后台的相关配置已就绪。

    1. /// 网络信息收集功能
    2. /// @param address 指定网络检测的域名,最好是用户服务器所在的域名或 IP,从而有针对性地检测用户对应用的网络连接质量;
    3. ///如果不想对外暴露 IP,就可以考虑设定一个可信的公共服务地址,比如国外的 Google/AWS,国内的百度、搜狐等。
    4. void LTAIHelpSetNetworkCheckHostAddress(const char* address);

    接入方法

    1. 首先设置监测IP
    2. LTGameSDK::GetInstance().LTAIHelpSetNetworkCheckHostAddress("IP或域名");
    3. 之后再在客服页面内触发监测
    4. 设置监听(如有需求可设置)
    5. 可选参数。
    6. 网络检测结果的回调,AIHelp 会将检测结果通过接口返回给调用者,如果有需要,可以自行取用。
    7. LongTuBaseSdk::LTGameSDK::GetInstance().setFeedBackHelpNetworkCheckCallBackLinstener(AIHelp_onNetworkCheckResult);
    8. 实现回调
    9. void AIHelp_onNetworkCheckResult(const char* netLog){
    10. NSLog(@"AIHelp_onNetworkCheckResult 网络监测结果:%@",[NSString stringWithUTF8String:netLog]);
    11. }

    4.10 设置当前keywindow

    接口说明
    设置当前keywindow

    1. /// 设置keywindow
    2. /// @param keyWindow 当前window
    3. void LTAIHelpSetKeyWindow(void* keyWindow);

    接入方法

    1. LTGameSDK::GetInstance().LTAIHelpSetKeyWindow([[UIApplication sharedApplication] keyWindow]);//示例为获取默认keywindow方法,如果有修改当前window则需要传入游戏当前使用的window。
    2. }

    ———————- OC接口———————-

    5 功能模块接入

    5.1 客服模块

    5.1.1 展示客服默认页面

    接口说明
    展示客服默认页面

    1. /**
    2. * 展示客服默认页面
    3. */
    4. - (void)LTAIHelpShowConversation;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpShowConversation];

    5.1.2 展示客服自定义页面

    接口说明
    展示客服自定义页面

    1. /**
    2. * 展示客服
    3. * @param conversationConfig 参数
    4. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    5. * @ humanSupport 机器人常显人工入口 (true / false)
    6. * @ message 人工客服自定义欢迎语 (自定义字符串)
    7. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    8. */
    9. - (void)LTAIHelpShowConversation:(LTFeedBackHelpConfig *_Nonnull)conversationConfig;

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临2222";(可选后台配置欢迎语)
    5. helpConfig.storyNode = @"故事线";
    6. [[LTGameOCSDK shareInstance] LTAIHelpShowConversation:helpConfig];

    5.2 FAQ模块

    5.2.1 默认FAQ页面

    接口说明
    默认FAQ页面

    1. - (void) LTAIHelpShowAllFAQSections;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpShowAllFAQSections];

    5.2.2 自定义FAQ页面

    接口说明
    自定义FAQ页面

    1. /**
    2. * 你可以通过配置来展示分类列表,支持 FAQ 的搜索,并支持在合适的位置展示客服系统入口。
    3. * @param moment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显2/不显1/点踩后显示3)
    4. * @param config FAQ 模块相关的配置信息
    5. * [dir]
    6. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    7. * @ humanSupport 机器人常显人工入口 (true / false)
    8. * @ message 人工客服自定义欢迎语 (自定义字符串)
    9. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    10. */
    11. - (void) LTAIHelpShowAllFAQSections:(int)moment config:(LTFeedBackHelpConfig *_Nonnull)config;

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临7777";
    5. [[LTGameOCSDK shareInstance] LTAIHelpShowAllFAQSections:2 config:helpConfig];

    5.2.3 FAQ分类页面

    接口说明
    FAQ分类页面

    1. /**
    2. * 不同于展示全部分类列表,AIHelp 支持在某些特殊场景下单独展示某个 FAQ 分类
    3. * @param sectionId 必传参数。 此参数为要展示的 FAQ 分类的分类 ID,
    4. */
    5. - (void) LTAIHelpShowFAQSection:(NSString *_Nonnull)sectionId;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpShowFAQSection:@"37891"];

    5.2.4 自定义FAQ分类页面

    接口说明
    自定义FAQ分类页面

    1. /**
    2. * 不同于展示全部分类列表,AIHelp 支持在某些特殊场景下单独展示某个 FAQ 分类
    3. * @param sectionId 必传参数。 此参数为要展示的 FAQ 分类的分类 ID,
    4. * @param moment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显2/不显1/点踩后显示3)
    5. * @param config FAQ 模块相关的配置信息
    6. * @ showConversationMoment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显/不显/点踩后显示)
    7. * [dir]
    8. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    9. * @ humanSupport 机器人常显人工入口 (true / false)
    10. * @ message 人工客服自定义欢迎语 (自定义字符串)
    11. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    12. */
    13. - (void) LTAIHelpShowAllFAQSections:(int)moment config:(LTFeedBackHelpConfig *_Nonnull)config;

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临6666";
    5. [[LTGameOCSDK shareInstance] LTAIHelpShowFAQSection:@"37891" moment:1 config:helpConfig];

    5.2.5 FAQ特定页面

    接口说明
    FAQ特定页面

    1. /**
    2. * 展示某个特定的 FAQ 问题。
    3. * @param faqId 展示的特定 FAQ 的 ID
    4. */
    5. -(void) LTAIHelpShowSingleFAQ:(NSString*_Nonnull)faqId;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpShowSingleFAQ:@"276" ];

    5.2.6 自定义FAQ特定页面

    接口说明
    自定义FAQ特定页面

    1. /**
    2. * 展示某个特定的 FAQ 问题。
    3. * @param faqId 展示的特定 FAQ 的 ID
    4. * @param moment FAQ 页面展示联系客服按钮的时机 ShowConversationMoment(常显2/不显1/点踩后显示3)
    5. * @param config FAQ 模块相关的配置信息
    6. *
    7. * [dir]
    8. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    9. * @ humanSupport 机器人常显人工入口 (true / false)
    10. * @ message 人工客服自定义欢迎语 (自定义字符串)
    11. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    12. */
    13. -(void) LTAIHelpShowSingleFAQ:(NSString*_Nonnull)faqId moment:(int)moment config:(LTFeedBackHelpConfig *_Nonnull)config;

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentBotSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = true;
    4. // helpConfig.welcomeMessage = @"欢迎观临7777";
    5. [[LTGameOCSDK shareInstance] LTAIHelpShowSingleFAQ:@"276" moment:1 config:helpConfig];

    5.3 运营模块

    5.3.1 默认运营模块

    接口说明
    默认运营模块

    1. /**
    2. * 通过调用此方法调起 AIHelp 运营模块。
    3. */
    4. -(void) LTAIHelpShowOperation;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpShowOperation];

    5.3.2 自定义运营模块

    接口说明
    自定义运营模块

    1. /**
    2. * 通过调用此方法调起 AIHelp 运营模块。
    3. * @param selectIndex 运营模块默认选中页签 int(>=0)
    4. * @param conversationTitle 运营模块机器人客服页签的标题
    5. * @param config 运营模块的定制化配置。
    6. *
    7. *
    8. * @ conversation 客服系统的跳转意图 (机器人 ConversationIntentBotSupport / 人工 ConversationIntentHumanSupport)
    9. * @ humanSupport 机器人常显人工入口 (true / false)
    10. * @ message 人工客服自定义欢迎语 (自定义字符串)
    11. * @ storyNode 特定故事线的入口节点 (故事线配置内容)
    12. */
    13. -(void) LTAIHelpShowOperation:(int)selectIndex title:(NSString*_Nullable)conversationTitle config:(LTFeedBackHelpConfig *_Nonnull)config;

    接入方法

    1. LTFeedBackHelpConfig *helpConfig = [[LTFeedBackHelpConfig alloc]init];
    2. helpConfig.conversationIntent = ConversationIntentHumanSupport;
    3. helpConfig.alwaysShowHumanSupportButtonInBotPage = false;
    4. [[LTGameOCSDK shareInstance]LTAIHelpShowOperation:INT_MAX title:@"专门的标题" config:helpConfig];

    6 其他功能

    6.1 用户退出

    接口说明
    用户退出

    1. /**
    2. * 用户退出登录时调用此方法告知 AIHelp,保证游客/用户信息的准确性。
    3. */
    4. - (void)LTAIHelpResetUserInfo;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpResetUserInfo];

    6.2 更新用户信息

    接口说明
    更新用户信息

    1. /**
    2. * 更新用户信息
    3. * @param roleID 角色ID
    4. * @param roleName 角色名称
    5. * @param roleServerId 角色服务器ID
    6. * @param userTages 用户标签 支持多个标签 默认为空
    7. * @param customData 自定义数据 格式:{“key”:“value”, “key”:“value”} ,默认为空
    8. * @param isSyncCrmInfo 是否将当前用户同步到 CRM
    9. * 设置推送参数
    10. * AIHelpTokenPlatformAPNS = 1, // Apple APNS
    11. * AIHelpTokenPlatformFirebase = 2, // firebase-FCM
    12. * AIHelpTokenPlatformJpush = 3, // Jpush
    13. * AIHelpTokenPlatformGeTui = 4, // GeTui
    14. * @param userTages 用户标签 支持多个标签 默认为空
    15. * @param customData 自定义数据 格式:{“key”:“value”, “key”:“value”} ,默认为空
    16. * @param isSyncCrmInfo 是否将当前用户同步到 CRM
    17. */
    18. - (void)LTAIHelpUpdateUserInfo:(NSString*_Nullable)roleID name:(NSString*_Nullable)roleName serverID:(NSString*_Nullable) roleServerId pushToken:(NSString*_Nullable)pushToken pushPlatform:(NSInteger) pushPlatform tages:(NSArray*_Nullable)userTages customData:(NSDictionary*_Nullable) customData isSyncCrmInfo:(BOOL)isSyncCrmInfo;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpUpdateUserInfo:roleID name:roleName serverID: roleServerId pushToken:@"pushToken" pushPlatform:pushPlatform tages:userTages customData:customData isSyncCrmInfo:isSyncCrmInfo];

    6.3 屏幕设置

    接口说明
    屏幕设置

    1. /**
    2. * 你可以根据应用的具体的场景来控制 SDK 的屏幕方向、是否全屏展示等
    3. * @param interfaceOrientationMask 屏幕方向类型
    4. */
    5. - (void) LTAIHelpSDKInterfaceOrientationMask:(UIInterfaceOrientationMask)interfaceOrientationMask;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpSDKInterfaceOrientationMask:UIInterfaceOrientationMaskPortrait];

    6.4 设置推送参数(废弃)

    接口说明
    屏幕设置

    1. /**
    2. * 设置推送参数
    3. * AIHelpTokenPlatformAPNS = 1, // Apple APNS
    4. * AIHelpTokenPlatformFirebase = 2, // firebase-FCM
    5. * AIHelpTokenPlatformJpush = 3, // Jpush
    6. * AIHelpTokenPlatformGeTui = 4, // GeTui
    7. * @param pushToken 用户的推送标识,需要在游戏集成的推送平台获取
    8. * @param pushPlatform AIHelp 支持四个推送平台,分别是 APNs、FireBase、极光以及个推。
    9. */
    10. -(void) LTAIHelpSetPushTokenAndPlatform:(NSString* _Nullable )pushToken pushPlatform:(int) pushPlatform;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpSetPushTokenAndPlatform:pushToken pushPlatform:1];

    6.5 上传需要查看的日志

    接口说明
    上传需要查看的日志

    1. /**
    2. * 上传需要查看的日志
    3. * 上传日志信息, 日志需要研发自己生成。
    4. * @param path 日志日志
    5. */
    6. -(void) LTAIHelpSetUploadLogPath:(NSString* _Nullable )path;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpSetUploadLogPath:path];

    6.6 当前展示的是否为 AIHelp 页面

    接口说明
    当前展示的是否为 AIHelp 页面

    1. /**
    2. * 当前展示的是否为 AIHelp 页面
    3. */
    4. -(BOOL) LTAIHelpISAIHelpShowing;

    接入方法

    1. BOOL isShow = [[LTGameOCSDK shareInstance] LTAIHelpISAIHelpShowing];

    6.7 设置SDK显示模式

    接口说明
    设置SDK显示模式

    1. /**
    2. * 设置SDK显示模式 ( iOS only )
    3. * @param mode
    4. * 0: 跟随系统
    5. * 1: 日间模式
    6. * 2: 黑暗模式
    7. */
    8. -(void) LTAIHelpSetSDKAppearanceMode:(int)mode;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpSetSDKAppearanceMode:1];

    6.8 设置未读消息回调监听

    接口说明
    设置未读消息回调监听

    1. //设置语音监听回调
    2. - (void) LTAIHelpSetHelpCallBackLinstener;
    3. /// aihelp未读消息回调
    4. /// @param count 未读消息数量
    5. - (void)ltAIHelpCallBack:(int)count;

    接入方法

    1. //实现代理并设置监听
    2. @interface LTAIHelpController ()<LTGameOCSDKDelegate>
    3. @end
    4. [LTGameOCSDK shareInstance].delegate = self;
    5. [[LTGameOCSDK shareInstance] LTAIHelpSetHelpCallBackLinstener];
    6. //回调
    7. - (void)ltAIHelpCallBack:(int)count{
    8. NSLog(@"ltAIHelpCallBack = %d",count);
    9. [self showMessage:[NSString stringWithFormat:@"未读消息数量:%d",count]];
    10. }

    6.9 网络状态监测

    接口说明
    注意:网络信息收集功能在 AIHelp 后台有开关及标签配置,在具体接入之前,请确定后台的相关配置已就绪。

    1. /// 网络信息收集功能
    2. /// @param address 指定网络检测的域名,最好是用户服务器所在的域名或 IP,从而有针对性地检测用户对应用的网络连接质量;
    3. ///如果不想对外暴露 IP,就可以考虑设定一个可信的公共服务地址,比如国外的 Google/AWS,国内的百度、搜狐等。
    4. - (void)LTAIHelpSetNetworkCheckHostAddress:(NSString *_Nonnull)address;

    接入方法

    1. 首先设置监测IP
    2. [[LTGameOCSDK shareInstance] LTAIHelpSetNetworkCheckHostAddress:@"IP或域名"];
    3. 之后再在客服页面内触发监测
    4. 设置监听(如有需求可设置)
    5. 可选参数。
    6. 网络检测结果的回调,AIHelp 会将检测结果通过接口返回给调用者,如果有需要,可以自行取用。
    7. [[LTGameOCSDK shareInstance] LTAIHelpSetNetworkCheckCallBackLinstener];
    8. 实现回调
    9. - (void)ltAIHelpNetworkCheckCallBack:(NSString *)netLog{
    10. NSLog(@"ltAIHelpNetworkCheckCallBack = %@",netLog);
    11. }

    6.10 设置当前keywindow

    接口说明
    设置当前keywindow

    1. /// 设置keyWindow
    2. /// @param keyWindow 当前window
    3. -(void)LTAIHelpSetKeyWindow:(UIWindow *)keyWindow;

    接入方法

    1. [[LTGameOCSDK shareInstance] LTAIHelpSetKeyWindow:[UIApplication sharedApplication].keyWindow];

    7 接入常见问题及解答

    这里汇总了一些 iOS 接入过程中有可能遇到的常见问题,方便接入过程中排查问题。

    1、unrecognized selector sent to instance exception

    报这个错误时, 需要 Xcode Build Settings 里的 Other Linker Flags 设置值 -ObjC.

    2、Undefined symbols for architecture armv7: “_res_9_nquery”, referenced form: _query_ip in …… clang: error: linker command faild with exit code 1 (use -v to see invocation) .

    这个错误是因为缺少了 libresolv.tbd 这个库, 需要在Xcode中添加, 同时检查是否缺少其他需要的依赖库.

    3、表单中打开相机崩溃

    这个错误是因为没有添加相机和麦克风的权限造成, 在 info.plist 中添加相应的权限即可. 如果已经添加过权限, 请参考下一条.

    4、设置 SDK 横屏显示后, 打开相机相册崩溃

    要解决这个错误, 需要在 Xcode 配置中或 AppDelegate 中的代理方法中支持横竖屏, 然后可以在RootViewController.m文件中添加supportedInterfaceOrientations方法,并返回游戏的支持方向, 具体实现请参考接入文档.

    1. - (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    2. return UIInterfaceOrientationMaskLandscape;
    3. }