美文网首页
iOS zendeskSDK 集成调试

iOS zendeskSDK 集成调试

作者: New_卡迪熊 | 来源:发表于2023-03-12 16:20 被阅读0次

    客户需要项目中接入客服系统,选用的zendesk

    文档介绍,看起来比较简单
    https://developer.zendesk.com/documentation/classic-web-widget-sdks/support-sdk/ios/nutshell/

    • 1.接下来就是下载SDK了
      可以使用pod 方式
      我这边使用的是手动添加
      https://github.com/zendesk/zendesk_sdk_ios 下载好直接导入到项目中
      同时在build phases 设置

      image.png
    • 2.接下来就是在AppDelegate 调用了

    #import <SupportSDK/SupportSDK.h>
    #import <ZendeskCoreSDK/ZendeskCoreSDK.h>
    #import <SupportProvidersSDK/SupportProvidersSDK.h>
    #import <SupportProvidersSDK/ZDKLogger.h>
    
        [ZDKZendesk initializeWithAppId: @""
                               clientId: @""
                             zendeskUrl: @""];  //这里需要再后台设置好ID 直接拿过来调用
        NSString *NameString = [[NSUserDefaults standardUserDefaults]objectForKey:@"emailcell"];
        id<ZDKObjCIdentity> userIdentity = [[ZDKObjCAnonymous alloc] initWithName:NameString ?: @"xiaoming" email:NameString ? : @"xiaoming@email.com"];
    
        [[ZDKZendesk instance] setIdentity:userIdentity];
        [ZDKSupport initializeWithZendesk: [ZDKZendesk instance]];
    
    • 3.另外再需要调用帮助中心页面直接引用
    #import <SupportSDK/SupportSDK.h>
    #import <ZendeskCoreSDK/ZendeskCoreSDK.h>
    #import <SupportProvidersSDK/SupportProvidersSDK.h>
    
            dispatch_async(dispatch_get_main_queue(), ^{
                
                AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
                UIViewController *helpCenter = [ZDKHelpCenterUi buildHelpCenterOverviewUiWithConfigs:@[]];
                UINavigationController *nav = [UINavigationController new];
                nav.modalPresentationStyle = UIModalPresentationFullScreen;
                
                [nav pushViewController:helpCenter animated:true];
                [delegate.window.rootViewController presentViewController:nav animated:true completion: nil];
            });
    
    • 4.就直接显示帮助中心页面


      IMG_4082.PNG
    • 5.最后Xcode 打包时候可能会遇上警告⚠️


      image.png
    • 6.为了避免上架过程中报错 需要加入脚本


      image.png
    APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
    
    # This script loops through the frameworks embedded in the application and
    # removes unused architectures.
    find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
    do
    FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
    
    EXTRACTED_ARCHS=()
    
    for ARCH in $ARCHS
    do
    echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
    lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
    EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
    done
    
    echo "Merging extracted architectures: ${ARCHS}"
    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
    rm "${EXTRACTED_ARCHS[@]}"
    
    echo "Replacing original executable with thinned version"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
    
    done
    
    

    另外再附一段请求代码示例

        ZDKRequestProvider *provider = [ZDKRequestProvider new];
        ZDKCreateRequest *request = [ZDKCreateRequest new];
    
        request.subject = [NSString stringWithFormat:@"%@:%@\n%@:%@\n%@:%@",
                           NSLocalizedString(@"礼品邮箱", nil),emailCell.EmailTextfield.text,
                           NSLocalizedString(@"订单号", nil),orderCell.OrderTextfield.text,
                           NSLocalizedString(@"礼品", nil),self.navtitlestring];  //请求主题
        request.requestDescription = [NSString stringWithFormat:@"%@\n%@:%@\n%@:%@\n%@:%@",
                                      NSLocalizedString(@"礼品", nil),
                                      NSLocalizedString(@"邮箱", nil),emailCell.EmailTextfield.text,
                                      NSLocalizedString(@"订单号", nil),orderCell.OrderTextfield.text,
                                      NSLocalizedString(@"礼品", nil),self.navtitlestring]; //请求描述
    //    request.tags = @"iOS"; //标签
        
        [SVProgressHUD showWithStatus:NSLocalizedString(@"Processing...",nil)];
        [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeGradient];
        [provider createRequest:request withCallback:^(id result, NSError *error) {
    
            if (error) {
                // Handle the error
    
                // Log the error
                [ZDKLogger e:@"Something went wrong"];
                [SVProgressHUD dismiss];
                [SVProgressHUD showErrorWithStatus:NSLocalizedString(@"上传失败,请重试", nil)];
                [SVProgressHUD dismissWithDelay:3.0];
    
            } else {
    
                [[NSUserDefaults standardUserDefaults] setObject:emailCell.EmailTextfield.text forKey:@"emailcell"];
                // 防止循环引用
                __weak typeof(self) weakSelf = self;
              //  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    [SVProgressHUD dismiss];
                    [weakSelf.navigationController popViewControllerAnimated:NO];
                    weakSelf.backBlock();
    
               // });
    
            }
        }];
    

    有疑问的小伙伴可以在评论区交流。

    相关文章

      网友评论

          本文标题:iOS zendeskSDK 集成调试

          本文链接:https://www.haomeiwen.com/subject/boxqrdtx.html