I’ve been trying out Google Tag Manager
for mobile devices, specifically Android but I keep getting a message saying “invalid macro” when trying getString(myKeyValue
) on a Container
.
Here’s a part of my code in my MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtHello = (TextView)findViewById(R.id.txtHello);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String hello = mContainer.getString("hello");
long l = mContainer.getLong("long");
txtHello.setText(hello + l);
}
});
tagManager = TagManager.getInstance(this);
ContainerOpener.openContainer(tagManager, CONTAINER_ID, OpenType.PREFER_NON_DEFAULT, null, new ContainerOpener.Notifier() {
@Override
public void containerAvailable(Container container) {
mContainer = container;
}
});
}
I’ve added these permissions in the manifest:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
I have the right Container_id because it shows the right version after refreshing it programmatically.
And this is my assets/tagmanager/CONTAINER_ID.json file (of course with the right filename):
{
'hello': 'hola',
'long' : '12345679'
}
So after my container is initialized, I press a button that runs the code above, trying to get the values. But I get the error: “Invalid macro: hello” and “Invalid macro: long”, also
“Failed to convert ” to a number”
This is a new service for mobile devices but can anybody help me with this?
I’ve found a problem for my case. I just downloaded a version from the web browser manager.
The important thing is to add a rule that allows GTM to use this macro. Always
comes in handy here.
Don’t forget to publish the version of your container
Answer:
For people not getting what dumazy referring to
you’ll also need to enable it with Always or any other appropriate rules
Answer:
In your json you are using ‘123456’ quotas to define long, you should not:
{
'string': 'hola',
'long': 123456,
'double': 123.123
}
If you have further problems look on: Android TagManager not getting default values
Tags: androidandroid