13

我想使用适用于 iOS v2 的 Google Analytics 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%。是否有可能在应用程序内获得净收入?
4

2 回答 2

11

SKProduct 返回本地化价格,如果我按原样跟踪它,收入汇总将不正确。有没有办法使价格正常化?

适用于 iOS v3 的 Google Analytics SKD添加了对货币的支持。跟踪事务如下所示:

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

不。

于 2013-11-09T09:53:13.483 回答
2

好问题,很遗憾你没有答案,因为我刚刚遇到了同样的问题。

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

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

这个想法是你不能对应用内的不同货币做任何事情。相反,您需要将问题转移到分析并使用它的过滤来计算每个国家应用商店的收入。

因此,如果是美国交易,则关联公司将是“美元”。

至于

考虑到苹果的削减,并不总是 30%

这对我来说是个新闻。我的印象是 30% 是苹果公司一成不变的。所以我只是将收入乘以 0.7

于 2013-04-23T15:29:38.083 回答