使用Google Analytics iOS SDK进行应用内购买跟踪
我希望使用Google AnalyticsSDK for iOS v2跟踪应用内购买,如其“ 电子商务跟踪指南”中所述。
收到SKPaymentTransactionStatePurchased
事务更新后,我正在执行以下操作:
- (void) trackTransaction:(SKPaymentTransaction*)transaction { NSString *transactionIdentifier = transaction.transactionIdentifier; GAITransaction *gaiTransaction = [GAITransaction transactionWithId:transactionIdentifier withAffiliation:@"App Store"]; SKPayment *payment = transaction.payment; NSString *productIdentifier = payment.productIdentifier; SKProduct *product = [self productForIdentifier:productIdentifier]; NSString *productTitle = product.localizedTitle; int64_t priceInMicros = product.price.floatValue * 1000000; // FIXME: Doesn't consider different currencies [gaiTransaction addItemWithCode:productIdentifier name:productTitle category:nil priceMicros:priceInMicros quantity:payment.quantity]; gaiTransaction.revenueMicros = priceInMicros * payment.quantity; // FIXME: doesn't consider Apple's cut id<GAITracker> tracker = [GAI sharedInstance].defaultTracker; [tracker trackTransaction:gaiTransaction]; }
以上是跟踪应用内购买的正确方法吗? 我至less发现了两个问题:
-
SKProduct
返回一个本地化的价格,如果我将它作为收入汇总将是不正确的。 有没有办法使价格正常化? - 回报的收入不考虑苹果公司的削减,这并不总是30%。 是否有可能获得应用程序内的净收入?
SKProduct返回一个本地化的价格,如果我将它作为收入汇总将是不正确的。 有没有办法使价格正常化?
Google Analytics SKD for iOS v3增加了对货币的支持。 跟踪一个事务看起来像这样:
- (void)storePaymentTransactionFinished:(NSNotification *)notification { SKPaymentTransaction *paymentTransaction = notification.transaction; if (paymentTransaction.transactionState == SKPaymentTransactionStateRestored) return; SKPayment *payment = paymentTransaction.payment; NSString *sku = payment.productIdentifier; SKProduct *product = [[RMStore defaultStore] productForIdentifier:sku]; NSLocale *priceLocale = product.priceLocale; NSString *currencyCode = [priceLocale objectForKey:NSLocaleCurrencyCode]; NSString *transactionId = paymentTransaction.transactionIdentifier; NSNumber *productPrice = product.price; { NSNumber *revenue = @(productPrice.floatValue * payment.quantity); GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createTransactionWithId:transactionId affiliation:@"App Store" revenue:revenue tax:0 shipping:0 currencyCode:currencyCode]; NSDictionary *parameters = [builder build]; [_tracker send:parameters]; } { GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createItemWithTransactionId:transactionId name:product.localizedTitle sku:sku category:@"In-App Purchase" price:productPrice quantity:@(payment.quantity) currencyCode:currencyCode]; NSDictionary *parameters = [builder build]; [_tracker send:parameters]; } }
上面的代码使用RMStore为了方便起见。
回报的收入不考虑苹果公司的削减,这并不总是30%。 是否有可能获得应用程序内的净收入?
没有。
好问题,可惜你没有答案,因为我刚刚提出了相同的问题。
所以为了激发关于这个话题的讨论,我想提出这个“解决方法”。
NSString *affiliation = [product.priceLocale objectForKey:NSLocaleCurrencyCode]; GAITransaction *gaiTransaction = [GAITransaction transactionWithId:transactionIdentifier withAffiliation:affiliation];
这个想法是,你不能做任何关于不同货币的应用程序。 相反,您需要将问题转移到Google Analytics(分析),并使用筛选来计算每个国家/地区App Store的收入。
所以如果是美国的交易, 会员将是“美元”。
至于
考虑到苹果的切入,这并不总是30%
这对我来说是新闻。 我给人留下的印象是,苹果公司30%的股份是由石头制造的。 所以我只是把收入乘以0.7