13

eコマーストラッキングガイドに示されているように、iOSv2用のGoogleアナリティクス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];
}

上記はアプリ内購入を追跡する正しい方法ですか?少なくとも2つの問題を検出します。

  1. SKProductローカライズされた価格を返します。そのまま追跡すると、収益の集計が正しくなくなります。価格を正規化する方法はありますか?
  2. 返される収益は、Appleの削減を考慮に入れていません。これは常に30%ではありません。アプリ内で純収入を得ることができますか?
4

2 に答える 2

11

SKProductはローカライズされた価格を返しますが、そのまま追跡すると、収益の集計が正しくなくなります。価格を正規化する方法はありますか?

iOSv3用のGoogleAnalyticsSKDは、通貨のサポートを追加しました。トランザクションの追跡は次のようになります。

- (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を使用しています。

返される収益は、Appleの削減を考慮に入れていません。これは常に30%ではありません。アプリ内で純収入を得ることができますか?

いいえ。

于 2013-11-09T09:53:13.483 に答える
2

良い質問です。同じ問題に直面したばかりなので、これに対する答えがないのは残念です。

したがって、このトピックに関する議論を刺激するために、この「回避策」を提案したいと思います。

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

アプリ内のさまざまな通貨については何もできないという考えです。代わりに、問題をAnalyticsに移動し、そのフィルタリングを使用して、全国のAppStoreごとの収益を計算する必要があります。

したがって、米国の取引の場合、アフィリエイトは「USD」になります。

はどうかと言うと

Appleのカットを考慮に入れてください。これは常に30%ではありません

これは私にとってのニュースです。私は、30%がAppleによって石に設定されたという印象を受けました。だから私はただ収入に0.7を掛けているだけです

于 2013-04-23T15:29:38.083 に答える