Bazaarvoice移动sdk提供了对Bazaarvoice提供的大多数核心产品的访问。必威手机版本要了解更多信息,请参阅Mobile SDK文档主页

内容

+显示 ——隐藏

本文档解释了使用Mobile SDK向Bazaarvoice提交消费者生成内容(CGC)的机制。

简介

BVSDK可以很容易地将消费者生成的内容(评论、问题、答案)上传到Bazaarvoice平台。的完整的API文档详细说明每个字段所代表的内容。联系Bazaarvoice建立对话,如果你还没有这样做。

你需要你的apiKeyConversations实现和使用移动sdk的对话。

Swift和Objective-C代码演练的完整项目在SDK路径中例子/对话.要获得更全面的对话SDK演示,请参见下面的BVSDKDemo项目/ / BVSDKDemo例子

开始实现此Mobile SDK模块之前,请检查上的步骤来验证您的安装安装页面。

使用对话提交API

安装Mobile SDK之后,完成以下步骤以提交消费者生成的内容。

步骤1:查看表单选项

对于提交表单中可用的每个选项,都有一个布尔标志来确定它是否是必需字段。您可以通过遍历可用的表单字段来发现这一点,可用的表单字段可以通过发出预览提交请求来找到。

这些表单字段还可能包含额外的信息,例如可用的提交值,以及特定于您的配置的字段的键,例如上下文数据值,等等。

// review是BVReviewSubmission的对象。审查。submit({(reviewSubmission) in // formFieldIdentifier是必须用于提交的键的名称// formField包含元数据reviewSubmission。formFields //这里你会得到formFields}, failure: {(errors) in // handle error})
guard let reviewSubmission = BVReviewSubmission(productId: "test1") else {return} reviewSubmission .configure(config) .add(.form) .handler {if case中的结果let .failure(errors) =结果{错误。forEach {print($0)} return}保护case let .success(meta, _) = result else {return} if let formFields = meta. result。formFields {for formField in formFields {let formFieldIdentifier = formField。identifier // formFieldIdentifier是提交时必须使用的键的名称let isRequired = formField。required //该字段是必选项还是可选项}}}reviewsubmit .async()

第二步:发送提交请求

评论提交

创建一个BVReviewSubmission对象并填写适当的字段。

一个BVReviewSubmission对象需要一个reviewTitlereviewText评级,productId(这篇评论对应于)。
let review = BVReviewSubmission(reviewTitle: " review title goes here", reviewText: " review text goes here", rating: 4, productId: "test1") review。userNickname = userNickname // "Samantha55"查看。userId = userId //用户的外部ID审核。userEmail = userEmail // "test@test.com"审查。sendEmailAlertWhenPublished = true review。agreedToTermsAndConditions = true //用户添加了一张照片到这个评审评审。addPhoto(userPhoto, withPhotoCaption: userPhotoCaption) //添加youtube视频链接,如果你的配置支持它检查。addVideoURL(userYouTubeUrl, withCaption: userVideoCaption) //提交这个评论就像调用submit review一样简单。submit({(reviewSubmission: BVSubmissionResponse) in // review submitted successfully!},失败:{(错误:[错误])在//处理失败适当})
BVReviewSubmission* review = [[BVReviewSubmission alloc] initWithReviewTitle:@" review title goes here" reviewText:@" review text goes here" rating:4 productId:@"test1"];审查。userNickname = userNickname;// "Samantha55"回顾。userId = userId;//用户的外部ID审查。userEmail = userEmail;// "test@test.com"审查。sendEmailAlertWhenPublished = [NSNumber numberWithBool:YES];审查。agreedToTermsAndConditions = [NSNumber numberWithBool:YES];//用户添加了一张照片到这个评论[评论addPhoto: userPhoto withPhotoCaption: userPhotoCaption]; // add youtube video link, if your configuration supports it [review addVideoURL: userYouTubeUrl withCaption: userVideoCaption]; // Submitting this review is as easy as calling submit [review submit:^(BVSubmissionResponse * _Nonnull) { // review submitted successfully! } failure:^(NSArray * _Nonnull errors) { // handle failure appropriately }];
让评审:BVReview = BVReview(productId: "test1", reviewText: "评审文本到这里。审议机构。审议机构。, reviewTitle: "Review title goes here", reviewreview: 4) guard let reviewSubmission = BVReviewSubmission(Review) else {return} reviewSubmission .add(.nickname("Nick")) .add(。附加(名称:“DateOfUserExperience”,值:“2021-04-03”)).add(.agree(true)) .configure(config) .add(.submit) .handler{结果在if情况下让.failure(错误)=结果{错误。forEach {print($0)} return}保护case let .success(meta, _) = result else {return}}

问题提交

提交一个问题几乎等同于提交一篇评论,如上所述。创建的实例BVQuestionSubmission,填写一些参数,并提交!

一个QuestionSubmission对象需要一个productId这个问题对应于。
//创建问题提交并填写用户输入值let question = BVQuestionSubmission(productId: "test1") question。questionSummary = userQuestion //“重?”问题。questionDetails = userQuestion // "这个多重?"userNickname = userNickname // "Samantha55"问题。userId = userId //用户的外部ID问题。userEmail = userEmail // "test@test.com"问题。agreedToTermsAndConditions = true //提交问题。submit({(questionSubmission: BVSubmissionResponse) in // question submitted successfully!},失败:{(错误:[错误])在//处理失败适当})
//创建问题提交并填写用户输入值BVQuestionSubmission* question = [[BVQuestionSubmission alloc] initWithProductId:@"test1"];的问题。questionSummary = userQuestion;//“重吗?”questionDetails = userQuestion;//“这个多重?”userNickname = userNickname;// "Samantha55"问题。userId = userId;//用户的外部ID问题。userEmail = userEmail;// "test@test.com" question.agreedToTermsAndConditions;(NSNumber numberWithBool:是的); // submit the question [question submit:^(BVSubmissionResponse * _Nonnull response) { // question submitted successfully! } failure:^(NSArray * _Nonnull errors) { // handle failure appropriately }];
let question: BVQuestion = BVQuestion(productId: "test1", questionDetails: "它有指纹传感器吗?",// questionSummary: "指纹传感器",isUserAnonymous:false) guard let questionSubmission = BVQuestionSubmission(question) else {return} questionSubmission .add(.nickname("Nick")) .add(.agree(true)) .add(.submit) questionSubmission .configure(config) .handler {result in if case let .failure(errors) = result{//处理失败适当返回}guard case let .success(meta, _) = result else {return} //问题提交成功!} questionSubmission.async ()

进步的提交

方法提交和更新消费者生成的内容(CGC)渐进提交API

渐进式提交应该用于客户端希望显示多个项目的多个审查请求表单的场景。此外,渐进式提交支持跨不同设备的部分或增量提交。

启动渐进提交

发送InitiateSubmitRequest返回与请求中传递的产品和userId相关的评审的当前状态。必威手机版本它还返回一个唯一的submissionSessionToken,用于提交内容和更新评论。

initiateSubmitRequest对象需要一个userId或一个加密的用户代理字符串(UAS)、至少一个productId和一个语言环境。
let initiateSubmitRequest = BVInitiateSubmitRequest(productIds: ["product1", "product2", "product3"]) initiateSubmitRequest。userId =用户initiateSubmitRequest。locale = locale initiateSubmitRequest。submit({(initiateSubmitResponseData) in ///Submission was successfully initiated}, failure: {(errors) in ///Submission initiation failed with errors})
进步的提交

一旦initiateSubmitResponse已经返回并且SubmissionSessionToken已经被接收,你就可以开始构造一个progressiveSubmissionRequest了。请求返回一个包含提交的评审字段的评审对象,以及请求中使用的会话令牌。

提交对象需要userId和userEmail,或者UserToken(用户代理字符串),productId, locale, submissionSessionToken, SubmissionFields
让提交= BVProgressiveSubmitRequest(productId:"productId")提交。submissionSessionToken = submissionSessionToken提交。Locale = Locale提交。userToken = userToken提交。submissionFields =字段提交。submit({(submittedReview) in /// Submission was successful}, failure: {(errors) in /// Submission failed with errors})
提交照片

要使用ProgressiveSubmission提交照片,您需要在使用PhotoSubmissionRequest上传照片后,将照片的url附加到ProgressiveSubmission的SubmissionFields。

let photo = BVPhotoSubmission(photo: image, photoCaption: photoCaption, photoContentType: .review)submit({(photoSubmissionResponse) in //将返回的URL分配给photourl字段fields["photourl_1"] = photourl;请求。submissionFields = fields}){(错误)在//照片上传失败与错误}
启动渐进提交

发送InitiateSubmitRequest返回与请求中传递的产品和userId相关的评审的当前状态。必威手机版本它还返回一个唯一的submissionSessionToken,用于提交内容和更新评论。

BVInitiateSubmitRequest对象需要一个userId或一个加密的用户代理字符串(UAS)、至少一个productId和一个语言环境。
BVInitiateSubmitRequest * initiateSubmitRequest = [[BVInitiateSubmitRequest alloc] initWithProductIds:@[@"product1", @"product2", @"product3"]]];initiateSubmitRequest。userId = @"test109";initiateSubmitRequest。locale = @"en_US";[initiateSubmitRequest submit:^(BVSubmissionResponse * _Nonnull response){//提交成功发起}failure:^(NSArray * _Nonnull errors){//提交发起失败,错误}];
进步的提交

一旦initiateSubmitResponse已经返回并且SubmissionSessionToken已经接收到,您就可以开始构造一个progressiveSubmissionRequest对象。请求返回一个包含提交的评审字段的评审对象,以及请求中使用的会话令牌。

BVProgressiveSubmitRequest对象需要userId和userEmail,或者UserToken(用户代理字符串),productId, locale, submissionSessionToken, SubmissionFields
BVProgressiveSubmitRequest *request = [[BVProgressiveSubmitRequest alloc] initWithProductId:@"sampleProduct"];请求。submissionSessionToken = sessionToken;// "唯一会话令牌"请求。Locale = Locale;// " user locale "请求。userToken = userToken;// "加密用户令牌"请求。submissionFields =字段;//提交字段字典[request submit:^(BVSubmissionResponse * _Nonnull response) {///submission was successful} failure:^(NSArray * _Nonnull errors) {/// submit failed with errors}];
提交照片

要使用ProgressiveSubmission提交照片,您需要在使用PhotoSubmissionRequest上传照片后,将照片的url附加到ProgressiveSubmission的SubmissionFields。

BVPhotoSubmission *photo = [[BVPhotoSubmission alloc] initWithPhoto:image photoCaption: photoContentType:contentType];[照片上传:^(NSString * _Nonnull photoURL, NSString * _Nonnull photoCaption){//将返回的URL分配给photoURL字段fields[@"photourl_1"] = photoURL;请求。submissionFields = fields} failure:^(NSArray * _Nonnull errors){//照片上传失败,错误}];
启动渐进提交

发送InitiateSubmitRequest返回与请求中传递的产品和userId相关的评审的当前状态。必威手机版本它还返回一个唯一的submissionSessionToken,用于提交内容和更新评论。

BVMultiProductQuery对象需要一个userId或一个加密的用户代理字符串(UAS)、至少一个productId和一个区域设置。
var encodedUAS = " 926e8604e6094ad98ec63c6eeb8d9e1a5cd47d68b141a8b0a5e206dc7e610504646174653d3230323131323037267573657269643d454d30303126456d6164647d30303126456d616262697368656b68732e6b616d61746825324254657374266f6963652ef6d " let multiProduct = BVMultiProduct(productIds: ["product1", "product2"], locale: "en_US", userToken: encodedUAS, userId:nil)保护让initiateMultiproductS必威手机版本ubmission = BVMultiProductQuery(multiProduct)否则{返回}initiateMultiproductSubmission .configure(config) .handler{在if情况下响应let .failure(errors) =响应,让error = errors。first {print("Fail") return}保护案例let .success(_, products) 必威手机版本= response else {return} for products. productformdata中的产品!{print(product.review?.productExternalId) print(product.submissionSessionToken)}} initiateMultipro必威手机版本ductSubmission.async()
进步的提交

一旦initiateSubmitResponse已经返回并且SubmissionSessionToken已经收到,你就可以开始构造一个BVProgressiveReviewSubmission对象。请求返回一个包含提交的评审字段的评审对象,以及请求中使用的会话令牌。

BVProgressiveReviewSubmission对象需要userId和userEmail,或者UserToken(用户代理字符串),productId, locale, submissionSessionToken, SubmissionFields
var submissionFields = BVProgressiveReviewFields() submissionFields。rating = 4 submissionFields。title = "我最喜欢的产品!"reviewtext = "最喜欢的产品评论正文最喜欢的产品评论正文" submissionFields。agreedToTerms = true var reviewSubmission = BVProgressiveReview(productId: "product1", submissionFields: submissionFields) reviewSubmission。isPreview = true reviewSubmission。submissionSessionToken = "sessionToken" reviewSubmission。locale = "en_US" reviewSubmission。userToken = encodedUAS guard let progressiveReviewSubmission = BVProgressiveReviewSubmission(reviewSubmission) else {return} progressiveReviewSubmission.configure(config) progressiveReviewSubmission. handler {result in if case let .failure(errors) = result, let error = errors。if case let .success(_, response) = result {print(response)} print("Success")} progressivereviewsubmit .async()
提交照片

要用ProgressiveSubmission提交照片,您需要在使用BVPhotoSubmission上传照片后,将照片的url附加到ProgressiveSubmission的SubmissionFields。

let jpg: BVPhoto = BVPhoto(标题:“你好?”,contentType: .review, image: image) let photoSubmission: BVPhotoSubmission = BVPhotoSubmission(jpg) .configure(config) .handler {(result: BVConversationsSubmissionResponse) in guard case .success = result else {return}} photoSubmission.async()

答案提交

提交答案几乎等同于提交评论或问题。创建的实例BVAnswerSubmission,填写一些参数,并提交!

一个AnswerSubmission对象需要一个questionId这个答案对应的是answerText,这是答案的主体。
//创建答案提交并填写用户输入值let answer = BVAnswerSubmission(questionId: userQuestionId, answerText: userAnswerText) answer。userNickname = userNickname // "Samantha55" answer。userId = userId //用户的外部ID答案。userEmail = userEmail // "test@test.com" answer。agreedToTermsAndConditions = true //提交答案答案。submit({(answerSubmission: BVSubmissionResponse) in // answer submitted successfully!},失败:{(错误:[错误])在//处理失败适当})
//创建答案提交并填写用户输入值BVAnswerSubmission* answer = [[BVAnswerSubmission alloc] initWithQuestionId:userQuestionId answerText:userAnswerText];的答案。userNickname = userNickname;//“Samantha55”答案。userId = userId;//用户的外部ID答案。userEmail = userEmail;//“test@test.com”答案。agreedToTermsAndConditions = [NSNumber numberWithBool:YES];//提交答案[answer submit:^(BVSubmissionResponse * _Nonnull response){//答案提交成功!} failure:^(NSArray * _Nonnull errors){//适当处理故障}];
let answer: BVAnswer = BVAnswer(questionId: "1642264", answerText: "是的。")保护让answerSubmission = BVAnswerSubmission(answer) else {return} answerSubmission .add(.nickname("Nick")) .add(.agree(true)) .add(.submit) .configure(config) .handler {result in if case let .failure(errors) = result{//处理失败适当返回}保护情况让.success(meta, _) = result else {return} //答案提交成功!} //提交答案answersubmit .async()

审查意见提交

提交审查评论就像创建一个BVCommentSubmission对象上的适当属性填充BVCommentSubmission对象。查看下面的示例,了解一些初始代码。

let commentText = "我喜欢评论! "他们是最!(reviewId: "192548", withCommentText: commentText)action = .preview //commentRequest。指纹= // iovation指纹会在这里…commentRequest。commentRequest.commentTitle = commentTitle。locale = "en_US" commentRequest。sendEmailAlertWhenPublished = true commentRequest。userNickname = "用户昵称" commentRequest。userId = " userId " commentRequest。userEmail = "developer@bazaarvoice.com" commentRequest。agreedToTermsAndConditions = true //某些PRR客户端可能支持添加照片,请检查您的配置//如果let photo = UIImage(named: "puppy"){// commentRequest。addPhoto(photo, withPhotoCaption: "Review Comment Pupper!") //} commentRequest。在// success self中提交({(commentSubmission)。showAlertSuccess(消息:"Success submission Review Comment!")}, failure: {(errors) in // error self.;showAlertError(message: errors.description)})
我喜欢注释几乎和Objective-C一样多!他们是最!认真!”;NSString *commentTitle = @"注释可以用Objective-C写";BVCommentSubmission *submission = [[BVCommentSubmission alloc] initWithReviewId:@"192550" withCommentText:commentText];/ / commentRequest。指纹= // iovation指纹会在这里…提交。action = BVSubmissionActionPreview;提交。campaignId = @"BV_COMMENT_CAMPAIGN_ID"; submission.commentTitle = commentTitle; submission.locale = @"en_US"; submission.sendEmailAlertWhenPublished = [NSNumber numberWithBool:YES]; submission.userNickname = @"UserNickname"; submission.userId = @"UserId"; submission.userEmail = @"developer@bazaarvoice.com"; submission.agreedToTermsAndConditions = [NSNumber numberWithBool:YES]; // user added a photo to this review //[submission addPhoto:[UIImage imageNamed:@"puppy"] withPhotoCaption:@"What a cute pupper!"]; [submission submit:^(BVSubmissionResponse * _Nonnull response) { // success [self showSuccess:@"Success Submitting Feedback!"]; } failure:^(NSArray * _Nonnull errors) { // error [self showError:errors.description]; }];
let comment = BVComment(reviewId: "20134832", commentText: "感谢发布这篇评论!",commentTitle: "Nice review .") guard let commentSubmission = BVCommentSubmission(comment) else {return} commentSubmission .add(.submit) .add(.nickname("Nick")) .configure(config) .handler {(response:BVConversationsSubmissionResponse) in if case let .failure(errors) = response{//错误返回}guard case let .success(meta, result) = response else {return} // success} commentSubmission.async()

反馈提交

提交反馈是最简单的内容提交。创建的实例BVFeedbackSubmission,填写所需参数,并提交!您可以使用反馈提交帮助投票或标记不适当的内容,只需设置类型BVFeedbackType枚举器。

AaBVFeedbackSubmission对象需要一个contentId它将对应于您的客户提供反馈的评审、问题或答案的标识符。
不能为联合内容提交反馈。一定要检查IsSyndicated在你显示你的反馈界面之前。
let feedback = BVFeedbackSubmission(contentId: contentId, with: BVFeedbackContentType.)review,使用:BVFeedbackType.helpfulness)反馈。userId = userId反馈。投票= BVFeedbackVote。正面//或。负面的向下投票反馈。submit({(response) in // success //确保禁用提交UI,这样用户就不能再次提交。}) {(errors) in // error //哎呀,有些错误。如果需要回滚。}
BVFeedbackSubmission *feedback = [[BVFeedbackSubmission alloc] initWithContentId:contentId withContentType:BVFeedbackContentTypeReview withFeedbackType:BVFeedbackTypeHelpfulness];反馈。userId = userId;反馈。投票= BVFeedbackVotePositive;反馈。action = BVSubmissionActionPreview;[feedback submit:^(BVSubmissionResponse * _Nonnull response) {// success //确保禁用提交UI,这样用户就不能再次提交。} failure:^(NSArray * _Nonnull errors) {// error //哎呀,一些错误。如果需要回滚。 }];
let feedback = BVFeedback。helpfulness(投票:.positive, authorId: "reviewAuthor", contentId: "reviewId", contentType: .review) guard let feedbackSubmission = BVFeedbackSubmission(feedback) else {return} feedbackSubmission .configure(config) .handler {(response: BVConversationsSubmissionResponse) in if let _ = response。错误{//错误//哎呀,一些错误。如果需要回滚。return}保护case let .success(_, result) = response else {return} // success //确保禁用提交UI,这样用户就不能再次提交。} feedbackSubmission.async ()

一般表单字段选项

中详细描述了所有可用字段BVReviewSubmission.h再往下看Bazaarvoice的API文档.必填字段,以及每个字段的特定规则(reviewText必须大于X个字符)取决于您的特定部署设置。