2012-12-08 44 views
13

Tôi muốn theo dõi mua hàng trong ứng dụng bằng SDK Google Analytics cho iOS v2, như được nêu trong hướng dẫn Ecommerce Tracking của họ.Theo dõi mua hàng trong ứng dụng với Google Analytics iOS SDK

Tôi hiện đang làm những điều sau đây sau khi nhận được một bản cập nhật SKPaymentTransactionStatePurchased giao dịch:

- (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]; 
} 

là ở trên một cách đúng đắn theo dõi mua trong ứng dụng? Tôi phát hiện hai vấn đề ở mức tối thiểu:

  1. SKProduct trả về giá đã bản địa hóa và nếu tôi theo dõi tổng hợp doanh thu sẽ không chính xác. Có cách nào để bình thường hóa giá không?
  2. Doanh thu được trả lại không tính đến khoản cắt của Apple, vốn không phải lúc nào cũng là 30%. Có thể có được doanh thu ròng trong ứng dụng không?

Trả lời

11

SKProduct trả về một giá cục bộ và nếu tôi theo dõi nó như nó vốn có doanh thu tổng hợp sẽ không chính xác. Có cách nào để bình thường hóa giá không?

Google Analytics SKD for iOS v3 thêm hỗ trợ cho đơn vị tiền tệ. Theo dõi giao dịch có dạng như sau:

- (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]; 
    } 
} 

Mã trên sử dụng RMStore để thuận tiện.

Doanh thu được trả lại không tính đến khoản cắt của Apple, là không phải luôn luôn 30%. Có thể có doanh thu ròng trong ứng dụng không?

No.

2

Câu hỏi hay, xin lỗi bạn không có câu trả lời cho điều này vì tôi vừa mới đưa ra cùng một vấn đề.

Vì vậy, để kích thích thảo luận về chủ đề này, tôi muốn đề xuất "giải pháp thay thế" này.

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

Ý tưởng là bạn không thể làm bất cứ điều gì về các loại tiền tệ khác nhau trong ứng dụng. Thay vào đó, bạn cần phải chuyển sự cố sang Analytics và sử dụng tính năng lọc để tính thu nhập trên mỗi App Store quốc gia.

Vì vậy, nếu đó là giao dịch tại Hoa Kỳ thì chi nhánh liên kết sẽ là "USD".

Đối với

mất cắt của Apple vào tài khoản, mà không phải lúc nào cũng 30%

đây là tin đối với tôi. Tôi đã ấn tượng rằng 30% được đặt trong đá bởi Apple. Vì vậy, tôi chỉ nhân doanh thu bằng cách 0,7

+0

Ý tưởng gọn gàng, @Seoras. – hpique

+0

Nó không phải luôn luôn chính xác 30%. Nó phụ thuộc vào khu vực cửa hàng ứng dụng và tiền tệ. Vì vậy, tôi sẽ để lại doanh thu như là cho các báo cáo và chỉ giữ trong tâm trí của tôi ~ 30% ... – oleynikd

+0

Đúng. 2 năm sau, bây giờ có một số kinh nghiệm trong vành đai của tôi, tôi có thể chỉ ra ở Nhật Bản là một ví dụ tốt về việc không được cắt giảm đầy đủ 70%. Nhật Bản giữ 20% thu nhập của bạn. Trừ khi bạn gửi, thông qua Apple, một hình thức miễn thuế mà cũng có thể là trong chữ tượng hình Ai Cập cổ đại của nó rất obfuscated. – Seoras

Các vấn đề liên quan