Skip to content

Usando métricas e analytics

netoleal edited this page Aug 2, 2011 · 2 revisions

Usando métricas e Analytics

Trabalhando com métricas

O ASF possui uma estrutura pronta para você plugar qualquer engine de tracking que quiser (Por exemplo o Google Analytics). Para isso, basta seguir os passos:

1. Crie um plugin

Você deve inicialmente criar uma classe que implementa a seguinte interface:

package asf.interfaces
{
	public interface IAnalyticsPlugin extends IDisposable
	{
		function track( uri:String ):void;
	}
}

O ASF possui um plugin de exemplo para você se basear:

package asf.plugins.analytics
{
	import asf.interfaces.IAnalyticsPlugin;

	import flash.external.ExternalInterface;

	public class ConsoleLogAnalyticsPlugin implements IAnalyticsPlugin
	{
		public function track( uri:String ):void
		{
			try
			{
				//Apenas exibe a URI informada no Console do browser (Firebug do Firefox ou Console nativo do Safari, por exemplo)
				ExternalInterface.call( "console.log", "	== TRACK: " + uri );
			}
			catch( e:Error )
			{
				log( uri );
			}
		}
	
		public function dispose():void
		{
			//Not needed here
		}
	}
}

2. Plugue sua classe ao ASF

app = new ASF( new Sprite( ), this.root.loaderInfo, loaderFactory );

//Aqui você define sua classe. Nesse caso, o plugin de exemplo está sendo usado
app.analyticsPlugin = new ConsoleLogAnalyticsPlugin( );

Assim, o ASF passa a usar sua classe de tracking para, mais a frente, executar as rotinas de métricas

3. Crie um XML com suas métricas

Você deve então criar um arquivo XML contendo sua estrutura de navegação de métricas.

<?xml version="1.0" encoding="UTF-8"?>
<metrics>
	<asf>
		<sample>
			<site>
				<loaded />
			</site>
			<home>
				<navigate uri="asf/sample/home/navigate/%s"/>
			</home>
			<gallery>
				<select uri="asf/sample/gallery/select/%s" />
			</gallery>
			<guestbook>
				<connect>
					<success />
				</connect>
			</guestbook>
		</sample>
	</asf>
</metrics>

Como você pode perceber no node navigate você pode criar uris dinâmicas. Nesse caso, esse valor será completado com uma variável aqui representada por "%s". Múltiplas variáveis são suportadas também.

4. Configure o application.xml para carregar seu XML de métricas

Você pode definir isso tanto no main application quanto dentro das seções. Assim, fica ao seu critério dividir os arquivos de métricas para deixar sua navegação mais leve e carregar os dados somente quando necessários.

<metrics>{mainApp.base}xml/metrics.xml</metrics>

Esse XML será carregado junto com as dependências da aplicação/seção

5. Acesse as métricas dentro da aplicação

app.trackAnalytics( app.metrics.asf.sample.site.loaded );

Nesse exemplo, estamos executando um tracking na aplicação principal que converterá o valor app.metrics.asf.sample.site.loaded na String "asf/sample/site/loaded". Assim fica simples de digitar!

Tracking com valores variáveis

No caso do track da navegação, é preciso passar um parâmetro para executar o track dinamicamente. Isso também é bem simples:

app.navigation.addEventListener( NavigationEvent.CHANGE, onSectionNavigate );

private function onSectionNavigate(event:NavigationEvent):void
{
	var nextSection:Section = event.section;

	//Passando o ID da seção carregada
	app.trackAnalytics( app.metrics.asf.sample.home.navigate, nextSection.id );
}

Nesse exemplo, quando navegarmos para a seção "gallery", por exemplo, o resultado será: "asf/sample/home/navigate/gallery". O método trackAnalytics relaciona os valores passados com as variáveis que ele precisa substituir representadas por "%s".

Usando ID ao invés do path inteiro do nó do XML

Você também pode usar o nome do nó na execução do trackAnalytics para economizar digitação e deixar a estrutura do XML livre.

Por exemplo, no exemplo passado, usamos:

app.trackAnalytics( app.metrics.asf.sample.home.navigate, nextSection.id );

Mas poderíamos usar simplesmente

app.trackAnalytics( "navigate", nextSection.id );

O resultado seria exatamente o mesmo.