如果您已启用收入验证,就可以使用 Adjust SDK 请求收入验证。
要使用收入验证,您首先需要在 Adjust suite 中为应用设置收入验证。请参阅为应用设置收入验证,了解相关说明。
通过 Adjust SDK 验证购买的方法有两种:
-
创建代表购买的
ADJEvent
对象并添加以下属性:transactionId
(NSString
):要验证的交易 ID。productId
(NSString
):已被成功售出货品的产品识别码。
-
适用您的交易 ID 和产品 ID 创建一个
ADJAppStorePurchase
对象。
如果您在 Adjust 中使用收入事件来监测购买,则应使用ADJEvent
类。如果您只想验证购买但不想将其与事件关联,请使用ADJAppStorePurchase
类。
当您使用 Adjust SDK 发送购买信息时,Adjust 会进行下列操作:
- 向 App Store 发送信息并等待状态响应。
- 将状态响应转发至 Adjust SDK。
您可以使用回传查看收入验证状态。结果以ADJPurchaseVerificationResult
对象的形式返回,包含以下属性:
verificationStatus
(NSString
):购买状态。code
(int
):购买的状态代码。message
(NSString
):App Store 返回的任何消息。
记录事件并验证购买
- (void)verifyAndTrackAppStorePurchase:(nonnull ADJEvent *)event withCompletionHandler:(nonnull ADJVerificationResultBlock)completion;
如需发送收入事件进行验证并监听收入验证状态,请按照下列步骤操作:
-
使用您的事件识别码实例化
ADJEvent
对象并设置以下参数:transactionId
(NSString
):要验证的交易 ID。productId
(NSString
):已被成功售出货品的产品识别码。
-
为此,请使用下列参数调用
Adjust.verifyAndTrackPlayStorePurchase
方法:event
(ADJEvent
): 您的实例化事件对象。callback
(ADJVerificationResultBlock
):接收ADJPurchaseVerificationResult
对象作为参数的委托回传函数。
在此示例中,收入验证响应被输出至日志后台进程。
let event = ADJEvent(eventToken: "g3mfiw")!event.setProductId("product-id")event.setTransactionId("transaction-id")
Adjust.verifyAndTrackAppStorePurchase(event) { verificationResult in print("Verification status: \(verificationResult.verificationStatus)") print("Code: \(verificationResult.code)") print("Message: \(verificationResult.message)")}
ADJEvent *event = [[ADJEvent alloc] initWithEventToken:yourEventToken];[event setProductId:@"product-id"];[event setTransactionId:@"transaction-id"];
[Adjust verifyAndTrackAppStorePurchase:event withCompletionHandler:^(ADJPurchaseVerificationResult * _Nonnull verificationResult) { NSLog(@"Verification status: %@", verificationResult.verificationStatus); NSLog(@"Code: %d", verificationResult.code); NSLog(@"Message: %@", verificationResult.message);}];
仅验证购买
- (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase withCompletionHandler:(nonnull ADJVerificationResultBlock)completion;
要发送单独购买并监听收入验证状态,请按照下列步骤操作:
-
使用以下参数实例化
ADJAppStorePurchase
:transactionId
(NSString
):要验证的交易 ID。productId
(NSString
):已被成功售出货品的产品识别码。
-
为此,请使用下列参数调用
Adjust.verifyAppStorePurchase
方法:purchase
(ADJAppStorePurchase
): 实例化的购买对象。callback
(ADJVerificationResultBlock
):接收ADJPurchaseVerificationResult
对象作为参数的委托回传函数。
在此示例中,收入验证响应被输出至日志后台进程。
let appStorePurchase = ADJAppStorePurchase(transactionId: yourTransactionId, productId: yourProductId;
Adjust.verifyAppStorePurchase(appStorePurchase) { verificationResult in print("Verification status: \(verificationResult.verificationStatus)") print("Code: \(verificationResult.code)") print("Message: \(verificationResult.message)")}
ADJAppStorePurchase *appStorePurchase = [[ADJAppStorePurchase alloc] initWithTransactionId:yourTranscationId productId:yourProductId];
[Adjust verifyAppStorePurchase:appStorePurchase withCompletionHandler:^(ADJPurchaseVerificationResult * _Nonnull verificationResult) { NSLog(@"Verification status: %@", verificationResult.verificationStatus); NSLog(@"Code: %d", verificationResult.code); NSLog(@"Message: %@", verificationResult.message);}];
如果您已启用购买验证,则必须随购买事件一同发送额外信息用于验证。Adjust 服务器收到ADJEvent
对象中的信息后,会将此信息转发至 Apple 验证购买。
要验证购买,请使用您的事件识别码实例化一个ADJEvent
对象并设置以下属性:
transactionId
(NSString
):已成功完成交易的transactionIdentifier
值。productId
(NSString
):已被成功售出货品的产品识别码receipt
(NSData
): 包含成功交易信息的签名收据。
请参阅发送事件信息了解有关ADJEvent
类的更多信息。
let receiptURL = Bundle.main.appStoreReceiptURL;let receipt = try Data(contentsOf: receiptURL, options: .alwaysMapped)
let event = ADJEvent(eventToken: "abc123")event?.setRevenue(6.0, currency: "EUR");event?.setTransactionId("transaction-id");event?.setProductId("product-id");event?.setReceipt(receipt);Adjust.trackEvent(event)
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];ADJEvent *event = [ADJEvent eventWithEventToken::@"your-event-token"];[event setRevenue:6.0 currency:@"EUR"];[event setTransactionId:@"transaction-id"];[event setProductId:@"product-id"];[event setReceipt:receipt];[Adjust trackEvent:event];