2016-08-02 2 views
9

Je mesure mes performances de retrait de l'application Android en utilisant le SDK google-analytics. J'ai créé un Wrapper que j'utilise pour envoyer des hits (et ça marche) et des exceptions (ça marche aussi). Je ne peux tout simplement pas le faire fonctionner avec des données de commerce électronique.Données manquantes sur la page d'analyse e-commerce optimisée par Android

Pour envoyer des données de commerce électronique je crée un produit et un productAction

Product product = new Product() 
      .setId(ID) 
      .setCategory(category) 
      .setBrand(brandID) 
      .setCustomDimension(1, typology) 
      .setCustomDimension(2, currency) 
      .setPrice(getTotal()) 
      .setQuantity(1); 
    // Add the step number and additional info about the checkout to the action. 
    ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE) 
      .setCheckoutStep(4) 
      .setCheckoutOptions("Perform payment"); 

puis

sendEcommerceCheckoutStep(product, productAction, "performPayment", getApplicationContext())

le corps de ladite méthode est

public void sendEcommerceCheckoutStep(Product product, ProductAction productAction, String checkoutStepName, Context context) { 
     HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder() 
       .addProduct(product) 
       .setProductAction(productAction) 
       .addImpression(product, checkoutStepName); 

     mTracker.setScreenName(checkoutStepName); 
     mTracker.send(builder.build()); 
     mTracker.setScreenName(null); 
    } 

Maintenant, Je m'attendrais à ce que les données circulent à travers l'analyse (et c'est le cas, je ch a caché les journaux d'adb) mais je ne peux pas le voir dans l'interface Web d'analyse.

C'est ce que je vois sur l'analyse interface web:

Google Analytics view of e-commerce

Comme vous pouvez le voir la seule colonne qui a des données est le « panier à Détail Rate » un. Mais comment puis-je avoir un taux de cart-to-detail si je n'ai pas de données dans une autre colonne?

Il s'agissait de l'écran "Performances du produit". Ceci est la "performance de la liste des produits":

produce list performance

toutes les autres colonnes sont 0 aussi bien. Pourquoi a-t-il listé les actions "ajouter au panier" mais pas les autres?

+0

Utiliser un événement au lieu de définir un nom d'écran pour chaque produit – HourGlass

+0

Il me semble que - pour utiliser Products and ProductActions pour le commerce électronique - je devrais utiliser ScreenViewBuilder: https://developers.google.com/analytics/devguides/collection/android/v4/enhanced-ecommerce –

+0

Ok, je vois ce que tu veux dire. J'ai essayé avec HitBuilders.EventBuilder constructeur = new HitBuilders.EventBuilder() .addProduct (produit) .setProductAction (productAction) .addImpression (produit, checkoutStepName); mais toujours je ne reçois rien dans l'onglet e-commerce de l'analyse. –

Répondre

1

Le code suivant fonctionne sur mon application. J'ai suivi le official transaction guide.

J'ai trouvé quelques différences avec les vôtres. Par exemple. le nom du pseudonyme, je ne le mets pas à zéro plus tard, je ne mets pas l'étape checkout, je ne définis pas les dimensions ni les impressions.

Ne hésitez pas à essayer:

public void trackPurchase(@NonNull TrackingPurchase trackingPurchase) { 
    HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder(); 

    for (TrackingProduct trackingProduct : trackingPurchase.getTrackingProducts()) { 
     builder.addProduct(this.createProduct(trackingProduct)); 
    } 
    builder.setProductAction(this.createProductAction(trackingPurchase)); 

    googleAnalyticsTracker.setScreenName("transaction"); 
    googleAnalyticsTracker.set("&cu", "USD"); 
    googleAnalyticsTracker.send(builder.build()); 
} 

@NonNull 
private Product createProduct(@NonNull TrackingProduct trackingProduct) { 
    return new Product() 
      .setId(trackingProduct.getSku()) 
      .setName(trackingProduct.getName()) 
      .setCategory(trackingProduct.getCategory()) 
      .setPrice(trackingProduct.getPrice()) 
      .setQuantity(trackingProduct.getQuantity()); 
} 

@NonNull 
private ProductAction createProductAction(@NonNull TrackingPurchase trackingPurchase) { 
    return new ProductAction(ProductAction.ACTION_PURCHASE) 
      .setTransactionId(trackingPurchase.getSaleId()) 
      .setTransactionAffiliation("Android App") 
      .setTransactionRevenue(trackingPurchase.getRevenue()) 
      .setTransactionTax(0) 
      .setTransactionShipping(trackingPurchase.getShippingCost()) 
      .setTransactionCouponCode(trackingPurchase.getCouponCode()); 
} 

TrackingPurchase est une classe qui ne contient que les différents TrackingProduct qui sont données à suivre.

je peux voir ce suivi en vérifiant ici:

Google Analytics Ecommerce

Par exemple, vous verrez les recettes et les meilleurs vendeurs.

+0

Merci Fernando. J'ai essayé avec votre code et simplifié le mien mais - encore - aucune donnée ne s'écoule par le commerce électronique. : - / –