更新时间:2024-07-30 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
场景1:初始化
描述
在第三方APP启动时,需要先初始化SDK,才能调用SDK的功能接口,该接口只需调用一次。
业务流程
SDK初始化时,先修改HwmSdk文件夹下HwmSdk.exe文件的名称,再调用Init接口,然后处理回调函数OnInitResult。
- 修改exe文件名称
    
    
修改HwmSdk文件夹下HwmSdk.exe文件名称为MySdk.exe。
 - 接口调用
    
    
- 构建数据结构HwmInitInfo。
      
- 定义派生类demoNotifyProc继承于基类HwmAgentNotify,新建派生类对象。
        
1static demoNotifyProc *notifyObj = new demoNotifyProc();
 
- 定义派生类demoCallbackProc继承于基类HwmAgentCallback,新建派生类对象。
        
1static demoCallbackProc *callbackObj = new demoCallbackProc();
 
- 构建其他变量。
 
 - 定义派生类demoNotifyProc继承于基类HwmAgentNotify,新建派生类对象。
        
 - 调用Init接口,完成配置初始化,第1步中的数据作为参数。
 
 - 构建数据结构HwmInitInfo。
      
 - 处理回调函数
    
    
处理回调函数OnInitResult。
 
示例代码
        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  | 
       
        /** *初始化接口,拉起应用 */ int CdemoBeforeLoginDlg::Init() { //组装入参结构体 hwmsdkagent::HwmInitInfo initParam; memset(&initParam, 0, sizeof(HwmInitInfo)); //(win32平台不需要)x64平台需要设置sdk路径,即exe文件路径,对exe文件重命名后,需要对应修改 //将路径转换为UTF8格式后拷贝给initParam,此处省略转换代码 strcpy_s(initParam.exePath, HWM_MAX_FILE_PATH_LEN, GetHwmSdkExePath().c_str()); //指定日志路径,将路径转换为UTF8格式后拷贝给initParam,此处省略转换代码 strcpy_s(initParam.logPath, HWM_MAX_FILE_PATH_LEN, GetLogPath().c_str()); //指定数据路径,将路径转换为UTF8格式后拷贝给initParam,此处省略转换代码 strcpy_s(initParam.userDataPath, HWM_MAX_FILE_PATH_LEN, GetUserDataPath().c_str()); strncpy_s(initParam.appId, GetAppId.c_str(), HWM_MAX_APPID_LEN); initParam.notify = notifyObj; initParam.callback = callbackObj; initParam.authType = hwmsdkagent::HWM_AUTH_TYPE_APPID; int ret = hwmsdkagent::Init(&initParam); return ret; }  | 
      
 
   exePath参数取值是HwmSdk目录的上级父目录,例如HwmSdk目录是E:\Hello_World\debug\win32\HwmSdk时,exePath的取值是E:\Hello_World\debug\win32\。
        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  | 
       
        /** * 初始化回调 */ void demoCallbackProc::OnInitResult(hwmsdk::HwmErrCode ret, const char* msg, HwmSdkInfo *sdkInfo) { CString codeStr; codeStr.Format(_T("%d"), ret); string msgStr = CTools::UTF82MultiByte(msg); string verStr = ""; if (sdkInfo != NULL) { verStr = CTools::UTF82MultiByte(sdkInfo->version); } CString tips = _T("OnInitResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str()) + _T(" version:") + CString(verStr.c_str()); AfxMessageBox(tips); }  | 
      
 
   典型场景和接口参考中的示例代码仅作为示例用的伪代码,不能直接使用。
   父主题: 典型场景