2012-12-08 68 views
13

我希望使用Google AnalyticsSDK for iOS v2跟踪应用内购买,如Ecommerce Tracking指南中所述。使用Google Analytics iOS SDK进行应用内购买跟踪

目前我正在做接收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]; 
} 

是跟踪应用内购买的正道上面?我至少检测到两个问题:

  1. SKProduct返回一个本地化价格,如果我按原样追踪它,收入聚合将不正确。有没有办法使价格正常化?
  2. 收入的回报并不考虑苹果公司的削减,这并不总是30%。是否有可能获得应用程序内的净收入?

回答

11

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%。是否有可能获得 应用程序内的净收入?

2

好问题,可惜你没有答案,因为我刚刚提出反对同样的问题。

因此,为了激发关于这个话题的讨论,我想提出这个“解决方法”。

NSString *affiliation = [product.priceLocale objectForKey:NSLocaleCurrencyCode]; 
GAITransaction *gaiTransaction = [GAITransaction transactionWithId:transactionIdentifier withAffiliation:affiliation]; 

这个想法是,你不能做任何有关不同货币的应用程序。 相反,您需要将问题转移到Google Analytics并使用其过滤来计算每个国家/地区App Store的收入。

因此,如果是美国交易,会员将为“美元”。

至于

拿苹果切进去,这并不总是30%

这是我这个消息。我给人留下的印象是,苹果公司30%的股份是由石头制造的。 所以我只是0.7

+0

不错的主意,@Seoras。 – hpique

+0

这并不总是正好30%。它取决于App Store地区和货币。所以我会按照报告的方式留下收入,只是想着〜30%... – oleynikd

+0

是。 2年后,现在有了一些经验,我可以指出日本是没有得到全面70%削减的好例子。日本保持20%的收入。除非您通过苹果提交免税表格,否则古埃及象形文字中的税款可能会如此混淆。 – Seoras

相关问题