Google Analytics Enhanced Ecommerce не получает доход
После внедрения расширенной функции электронной коммерции для iOS обзор электронной торговли Google Analytics показывает нулевой доход. Я реализовал измерение транзакции напрямую, без каких-либо шагов проверки. Выходные данные консоли выводят правильное значение дохода вместе с другими переменными, но после этого появляется "http status -1". Я запустил проверку уведомлений "Отсутствуют данные электронной торговли", но прошло уже 3 дня, и она все еще не завершена. Кто-нибудь знает, как решить эту проблему?
Я следил за официальным руководством Google по электронной торговле здесь (раздел Измерение транзакций): https://developers.google.com/analytics/devguides/collection/ios/v3/enhanced-ecommerce
PS: в Google Analytics включена расширенная электронная торговля, в проект добавлен GoogleService-Info.plist.
Мой код:
static func tagCheckoutFromBookingInfo(bookingInfo: BookingInfo?, discountCode: String?) {
//#if ANALYTICS
let eventData = ProductInfo()
let generalProductDict = eventData.getPayload(bookingInfo?.property, priceInfo: bookingInfo?.propertyPriceInfo(), specificInfo: nil, positionInList: nil)
let product = ecommerceProductFromGeneralProductDict(generalProductDict, discountCode: discountCode)
let builder = GAIDictionaryBuilder.createEventWithCategory(GTMEcommerceKeys.CheckoutCategory.rawValue, action: GTMEcommerceKeys.CheckoutPurchase.rawValue, label: nil, value: nil)
let action = GAIEcommerceProductAction()
action.setAction(kGAIPAPurchase)
action.setTransactionId("T123")
action.setAffiliation(GTMEcommerceKeys.CheckoutAffiliaction.rawValue)
action.setRevenue(NSNumber(double: GTMHelper.priceFromDict(generalProductDict)))
action.setCouponCode(discountCode ?? "")
builder.setProductAction(action)
builder.addProduct(product)
let build: [NSObject: AnyObject] = builder.build() as [NSObject : AnyObject]
tracker.send(build)
//#endif
}
static func ecommerceProductFromGeneralProductDict(dict: [String: AnyObject]?, discountCode: String?) -> GAIEcommerceProduct {
let product = GAIEcommerceProduct()
let productId = (dict?[GTMKeys.ProductId.rawValue] as? String) ?? ""
let productName = (dict?[GTMKeys.ProductName.rawValue] as? String) ?? ""
product.setId(productId)
product.setName(productName)
if discountCode != nil {
product.setCouponCode(discountCode ?? "")
}
if let productCategory = dict?[GTMKeys.ProductType.rawValue] as? String {
product.setCategory(productCategory)
}
product.setPrice(GTMHelper.priceFromDict(dict))
product.setQuantity(NSNumber(integer: 1))
return product
}
Консольный вывод:
2016-08-05 16:41:28.986 Belvilla[1435:339806] VERBOSE: GoogleAnalytics 3.14 -[GAIBatchingDispatcher persist:] (GAIBatchingDispatcher.m:517): Saved hit: {
parameters = {
"&_crc" = 0;
"&_s" = 3;
"&_u" = ".nteynL";
"&_v" = "mi3.1.4";
"&a" = 655...;
"&aid" = "--------------";
"&an" = Name;
"&ate" = "<null>";
"&av" = "3.4.0";
"&cid" = "f40c6c80-3ec9-43...";
"&dm" = "iPhone6,1";
"&ds" = app;
"&ea" = Purchase;
"&ec" = Ecommerce;
"&el" = "<null>";
"&ev" = "<null>";
"&idfa" = "<null>";
"&pa" = purchase;
"&pr1ca" = "Holiday home";
"&pr1cc" = "";
"&pr1id" = "XX-00-20-00";
"&pr1nm" = "Test House";
"&pr1pr" = "456.7";
"&pr1qt" = 1;
"&sr" = 640x1136;
"&t" = event;
"&ta" = "Booking";
"&tcc" = "";
"&ti" = T123;
"&tid" = "UA-.....";
"&tr" = "456.7";
"&ul" = "en-fr";
"&v" = 1;
"&z" = 740324....;
gaiVersion = "3.14";
};
timestamp = "2016-08-05 13:41:28 +0000";
}
1 ответ
Итак, хитрость заключалась в том, чтобы удалить пользовательский интервал отправки из TagManager (приложение сочетает в себе как GA, так и GTM)
tagManager.dispatchInterval = NSTimeInterval(1.0)
После этого устанавливается интервал отправки по умолчанию (120 секунд), и все работает нормально, код ответа HTTP - 200.