2015-04-09 3 views
3

Я пытаюсь реализовать Диспетчер тегов Google, следуя учебник на этой веб-странице:Android Google v4 Диспетчера тегов ContainerLoadedCallback

https://developers.google.com/tag-manager/android/v4/#init

Но я не могу показаться, чтобы найти то, что ContainerLoadedCallback должен делать или где источник этого класса. любая помощь очень ценится

Что я в настоящее время в моей заставке деятельности является следующее:

 PendingResult<ContainerHolder> pending = 
       App.getTagManager().loadContainerPreferNonDefault(C.Const.GTM_CONTAINER_ID, 
         R.raw.gtm_default_container); 

     // The onResult method will be called as soon as one of the following happens: 
//  1. a saved container is loaded 
//  2. if there is no saved container, a network container is loaded 
//  3. the request times out. The example below uses a constant to manage the timeout period. 
     // The onResult method will be called as soon as one of the following happens: 
     //  1. a saved container is loaded 
     //  2. if there is no saved container, a network container is loaded 
     //  3. the request times out. The example below uses a constant to manage the timeout period. 
     pending.setResultCallback(new ResultCallback<ContainerHolder>() { 
      @Override 
      public void onResult(ContainerHolder containerHolder) { 
       ContainerHolderSingleton.setContainerHolder(containerHolder); 
       Container container = containerHolder.getContainer(); 
       if (!containerHolder.getStatus().isSuccess()) { 
        Log.e("CuteAnimals", "failure loading container"); 

        return; 
       } 
       ContainerHolderSingleton.setContainerHolder(containerHolder); 
       ContainerLoadedCallback.registerCallbacksForContainer(container); 
       containerHolder.setContainerAvailableListener(new ContainerHolder.ContainerAvailableListener() { 
       }); 
       startMainActivity(); 
      } 
     }, 2, TimeUnit.SECONDS); 

ответ

10

Он реализован в их cuteanimals образце, вы можете найти его в папке SDK (если у вас есть Google Play установлены службы)

<SDK Dir>/extras/google/google_play_services/samples/tagmanager/cuteanimals/.../cuteanimals/SplashScreenActivity.java

Snippet:

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

private static class CustomMacroCallback implements FunctionCallMacroCallback { 
    private int numCalls; 

    @Override 
    public Object getValue(String name, Map<String, Object> parameters) { 
     if ("increment".equals(name)) { 
      return ++numCalls; 
     } else if ("mod".equals(name)) { 
      return (Long) parameters.get("key1") % Integer.valueOf((String) parameters.get("key2")); 
     } else { 
      throw new IllegalArgumentException("Custom macro name: " + name + " is not supported."); 
     } 
    } 
} 

private static class CustomTagCallback implements FunctionCallTagCallback { 
    @Override 
    public void execute(String tagName, Map<String, Object> parameters) { 
     // The code for firing this custom tag. 
     Log.i("CuteAnimals", "Custom function call tag :" + tagName + " is fired."); 
    } 
} 
+1

Что такое 'increment', 'mod' в registerCallbacksForContainer()? – sandeepmaaram

Смежные вопросы