2015-05-22 17 views
10

Tôi cố gắng để thực hiện Google Tag Manager bằng cách làm theo hướng dẫn này: https://developers.google.com/tag-manager/android/v4/Thực hiện Google Tag Manager vào Android

Khi tôi chạy các ứng dụng, tôi nhận được trong giao diện điều khiển các lỗi này:

05-22 12:27:44.490 V/GoogleTagManager﹕ Attempting to load a container from the resource ID 2131099650 (testconverteo.ismail.converteotag:raw/gtm_default_container) 
    05-22 12:27:44.520 E/GoogleTagManager﹕ Invalid macro: _gtm.loadEventEnabled 
    05-22 12:27:44.520 V/GoogleTagManager﹕ loadAfterDelay: containerId=GTM-XXXXX delay=29397190 
    05-22 12:27:44.530 E/GoogleTagManager﹕ Invalid macro: _gtm.loadEventEnabled 
    05-22 12:27:44.490 W/GoogleTagManager﹕ Failed to extract the container from the resource file. Resource is a UTF-8 encoded string but doesn't contain a JSON container 

Và tôi không có dữ liệu trong Google Analytics trong thời gian thực, thậm chí không có gì khác chứng minh rằng ứng dụng của tôi được theo dõi.

Nếu có ai gặp vấn đề tương tự hoặc anh ấy đã làm theo các bước tương tự và biết cách giải quyết vấn đề này, vui lòng để lại lời giải thích trong nhận xét.

Các bước tôi đã thực hiện:

  • Tôi lập Chơi SDK dịch vụ Google bằng cách thêm vào builde.gradle (mô-đun: ứng dụng) này là một phần của mã: compile 'com.google.android.gms:play-services:7.3.0'
  • tôi thêm quyền đối với tệp AndroidManifest.xml
  • Tôi tải xuống và thêm nhị phân vùng chứa mặc định vào ứng dụng
  • Tôi tạo hoạt động màn hình giật gân nơi tôi khởi tạo GTM bằng cách làm theo mẫu của hướng dẫn
  • Tôi đã đẩy một sự kiện vào một dataLayer

Những gì tôi hiện có trong hoạt động màn hình của tôi là như sau:

public class SplashScreenActivity extends Activity { 

    private static final String CONTAINER_ID = "GTM-XXXX"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splashscreen); 

     TagManager tagManager = TagManager.getInstance(this); 
     tagManager.setVerboseLoggingEnabled(true); 

     PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(
      CONTAINER_ID, 
      R.raw.gtm_default_container 
     ); 

     pending.setResultCallback(new ResultCallback<ContainerHolder>() { 
      @Override 
      public void onResult(ContainerHolder containerHolder) { 
       ContainerHolderSingleton.setContainerHolder(containerHolder); 
       Container container = containerHolder.getContainer(); 
       if (!containerHolder.getStatus().isSuccess()) { 
        Log.e("IL", "failure loading container"); 
        return; 
       } 
       ContainerHolderSingleton.setContainerHolder(containerHolder); 
      ContainerLoadedCallback.registerCallbacksForContainer(container); 
      containerHolder.setContainerAvailableListener(new ContainerLoadedCallback()); 
       startMainActivity(); 
      } 
     }, 2, TimeUnit.SECONDS); 
    } 

    private void startMainActivity() { 
     Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); 
     startActivity(intent); 
    } 

    private static class ContainerLoadedCallback implements ContainerHolder.ContainerAvailableListener { 
     @Override 
     public void onContainerAvailable(ContainerHolder containerHolder, String containerVersion) { 
      // We load each container when it becomes available. 
      Container container = containerHolder.getContainer(); 
      registerCallbacksForContainer(container); 
     } 

     public static void registerCallbacksForContainer(Container container) { 
      // Register two custom function call macros to the container. 
      container.registerFunctionCallMacroCallback("increment", new CustomMacroCallback()); 
      container.registerFunctionCallMacroCallback("mod", new CustomMacroCallback()); 
      // Register a custom function call tag to the container. 
      container.registerFunctionCallTagCallback("custom_tag", new CustomTagCallback()); 
     } 

    } 

} 

Và trong Hoạt động chính:

public void onStart() { 
    super.onStart(); 
    DataLayer dataLayer = TagManager.getInstance(this).getDataLayer(); 
    dataLayer.pushEvent("Application ouverte", DataLayer.mapOf("login page","un de plus")); 
} 

Và tôi cũng đã tạo lớp này:

public class ContainerHolderSingleton { 

    private static ContainerHolder containerHolder; 

    /** 
    * Utility class; don't instantiate. 
    */ 
    private ContainerHolderSingleton() { 
    } 

    public static ContainerHolder getContainerHolder() { 
     return containerHolder; 
    } 

    public static void setContainerHolder(ContainerHolder c) { 
     containerHolder = c; 
    } 
} 

Xin lưu ý tôi đã ẩn ID Google Tag Manager chứa

Hãy cho tôi biết nếu ai muốn biết thêm thông tin

Cảm ơn bạn

+0

[Câu trả lời này] (http://stackoverflow.com/a/28765301/2835243) sẽ hữu ích. – TheWanderingMind

+0

@BishopBarber Cảm ơn bạn, tôi đã đọc câu trả lời đó trước đây nhưng không may, tôi vẫn gặp vấn đề tương tự – Mallasse

+0

Tôi tin rằng vấn đề của bạn là bạn không thêm quy tắc cho phép GTM sử dụng macro của bạn. 'Một macro có sẵn bất cứ khi nào một trong các quy tắc cho phép của nó được đáp ứng'. Nếu bạn đang sử dụng phiên bản Trình quản lý thẻ mới nhất, hãy xem tại đây (https://support.google.com/tagmanager/answer/6106961).Khác, [xem tại đây] (https://support.google.com/tagmanager/answer/2644396?hl=vi&ref_topic=2574304). – TheWanderingMind

Trả lời

5

Thay thế dòng compile 'com.google.android.gms:play-services:7.3.0' với compile 'com.google.android.gms:play-services:7.0.0' hoặc compile 'com.google.android.gms:play-services-analytics:7.0.0' (đó là thậm chí tốt hơn vì nó chỉ bao gồm các công cụ liên quan đến ga và gtm)

Tôi đã đủ may mắn để bắt đầu với 7.0.0 nd thấy gtm hoạt động. Sau đó nâng cấp lên 7.3.0 và nó chỉ dừng hoạt động. Nó có thể được sửa với lib gms mới.

Tất cả những gì giả định bạn đã định cấu hình vùng chứa của mình. Nếu không đọc thêm về điều đó tại đây https://support.google.com/tagmanager/answer/6103657?hl=en&ref_topic=3441530

+0

Cảm ơn bạn rất nhiều bạn, tôi đã làm những gì bạn nói @ fada21 và có vẻ như nó hoạt động, tôi có thể thấy trong giao diện điều khiển rằng hit được gửi đi, nhưng trong google analytics tôi không có gì trong thời gian thực – Mallasse

+0

Bạn có điều gì đó không giống như định nghĩa thẻ của bạn: http://pasteboard.co/1pQOY1u3.png. Dù sao tôi sẽ tài liệu thiết lập của tôi tốt hơn trong thời gian rảnh rỗi và chia sẻ với bạn. Btw gần đây tôi đã thử nghiệm gcm 7.5.0 và nó đã được làm việc. Điều đó có nghĩa là "biên dịch" com.google.android.gms: play-services-analytics: 7.5.0'''' sẽ hoạt động kể từ bây giờ – fada21

+0

Cảm ơn rất nhiều @ fada21, tôi có một số câu hỏi, bạn sử dụng vùng chứa nào ? Các nhị phân hoặc .json? và khi tôi thay đổi cấu hình của vùng chứa, tôi có nên tải xuống và thêm lại vào dự án của mình không? – Mallasse

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