- Analizleri bir tedarikçi firmaya mı gönderiyorsunuz, yoksa şirket içi çözüm mü kullanıyorsunuz?
- Yapılandırma verilerini belirtme
- Doğrulama
- AMP bileşenleri için analiz
amp-analytics
Description
Bir AMP dokümanındaki analiz verilerini yakalar.
Required Scripts
<script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script>
Örnekler
Bir AMP dokümanındaki analiz verilerini yakalar.
Zorunlu Komut Dosyası | <script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script> |
Örnekler | Örneklerle AMP amp-analytics örneği sayfasına bakın. |
Analizleri bir tedarikçi firmaya mı gönderiyorsunuz, yoksa şirket içi çözüm mü kullanıyorsunuz?
Sitenizde AMP Analytics'i kullanmaya başlamadan önce, kullanıcı etkileşimini analiz etmek için üçüncü taraf analiz araçlarını mı yoksa kendi şirket içi çözümünüzü mü kullanacağınıza karar vermeniz gerekir.
Bir analiz tedarikçi firmasına veri gönderme
AMP Analytics, bir kez ölçmek ve çok sayıda kullanıcıya rapor göndermek üzere özel olarak tasarlanmıştır. Bir veya daha fazla analiz tedarikçi firmasıyla çalışıyorsanız çözümlerini AMP ile entegre edip etmediklerini öğrenmek için Analiz Tedarikçi Firmaları listesine bakın.
Entegre AMP Analytics tedarikçi firmaları için:
<amp-analytics>
etiketine,type
özelliğini ekleyin ve değerini, belirtilen tedarikçi firma bilgisine ayarlayın.- Yakalamak ve izlemek istediğiniz verileri belirleyin ve bu ayrıntıları, yapılandırma verilerinde belirtin. Analiz verilerinin nasıl yakalanacağıyla ilgili talimatlar için tedarikçi firmanın dokümanlarına bakın.
Analiz tedarikçi firması AMP ile entegre değilse tedarikçi firmaya ulaşıp destek sağlamalarını isteyin. Ayrıca, tedarikçi firmanın eklenmesini isteyen AMP projesinde bir sorun oluşturmanızı da öneririz. Ayrıca, Analiz araçlarınızı AMP HTML ile entegre etme konusuna da bakın. Alternatif olarak, tedarikçi firmanızla birlikte çalışarak verileri belirttikleri URL'lere gönderin. Aşağıdaki Verileri şirket içinde gönderme bölümünde daha fazla bilgi edinebilirsiniz.
Örnek: Verileri bir üçüncü taraf analiz tedarikçi firmasına gönderme
Aşağıdaki örnekte, analiz verileri, AMP ile entegre olmuş bir üçüncü taraf analiz sağlayıcısı olan Nielsen'a gönderilir. Nielsen için analiz verilerinin yapılandırılmasıyla ilgili ayrıntılar, Nielsen dokümanlarında bulunabilir.
<amp-analytics type="nielsen">
<script type="application/json">
{
"vars": {
"apid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"apv": "1.0",
"apn": "My AMP Website",
"section": "Entertainment",
"segA": "Music",
"segB": "News",
"segC": "Google AMP"
}
}
</script>
</amp-analytics>
Şirket içinde veri gönderme
Kullanıcı etkileşimini ölçmek için kendi şirket içi çözümünüz varsa AMP Analytics'i bu çözümle entegre etmek için yalnızca bir URL'ye ihtiyacınız olur. Bu URL, verileri göndereceğiniz URL'dir. Verileri, çeşitli URL'lere de gönderebilirsiniz. Örneğin, sayfa görüntüleme verilerini bir URL'ye ve sosyal etkileşim verilerini başka bir URL'ye gönderebilirsiniz.
Belirli bir URL'ye veri göndermek için:
- Yakalamak ve izlemek istediğiniz verileri belirleyin ve bu ayrıntıları, yapılandırma verilerinde belirtin.
requests
yapılandırma nesnesinde, izlenecek istek türünü (ör. sayfa görüntüleme, özel tetiklenen etkinlikler gibi) ve izleme verilerini göndermek istediğiniz yerin URL'lerini belirtin.
usqp
parametresini çıkarın veya yoksayın. Bu parametre, Google tarafından Google AMP Önbelleği denemelerinin tetiklenmesi amacıyla kullanılır. Örnek: Verileri bir URL'ye gönderme
Burada, sayfa görüntülemelerini izleyen basit bir örnek verilmiştir. Bir sayfanın görünür hale geldiği her seferinde, tetikleyici etkinlik etkinleşir ve sayfa görüntüleme verilerini rastgele bir kimlikle birlikte tanımlanmış bir URL'ye gönderir.
<amp-analytics>
<script type="application/json">
{
"requests": {
"pageview": "https://foo.com/pixel?RANDOM"
},
"triggers": {
"trackPageview": {
"on": "visible",
"request": "pageview"
}
}
}
</script>
</amp-analytics>
Yapılandırma verilerini belirtme
<amp-analytics>
öğesinde, neyin ölçüleceğine ve analiz verilerinin nereye gönderileceği ile ilgili ayrıntıları içeren bir JSON yapılandırma nesnesi belirtirsiniz.
<amp-analytics>
için yapılandırma nesnesi şu biçimi kullanır:
{
"requests": {
request-name: request-value,
...
},
"vars": {
var-name: var-value,
...
},
"extraUrlParams": {
extraurlparam-name: extraurlparam-value,
...
},
"triggers": {
trigger-name: trigger-object,
...
},
"transport": {
"beacon": *boolean*,
"xhrpost": *boolean*,
"image": *boolean*,
}
}
Satır içi veya uzak yapılandırma
Yapılandırma verileri satır içinde belirtilebilir veya config
özelliğinde bir URL belirtilerek uzaktan getirilebilir. Buna ek olarak, popüler analiz tedarikçi firmaları için yerleşik yapılandırma, type
özelliği kullanılarak seçilebilir.
Bu kaynakların birden fazlasına ait yapılandırma verileri kullanılırsa yapılandırma nesneleri (değişkenler, istekler ve tetikleyiciler) şu şekilde birleştirilir:
- Uzak yapılandırma, satır içi yapılandırmadan önceliklidir ve
- Satır içi yapılandırma, tedarikçi firma yapılandırmasından önceliklidir.
Uzak yapılandırma yükleme
Bir uzak yapılandırmayı yüklemek için <amp-analytics>
öğesinde config
özelliğini ve yapılandırma verilerinin URL'sini belirtin. Belirtilen URL, HTTPS şemasını kullanmalıdır. URL, AMP URL değişkenlerini içerebilir. Çerezlere erişmek için data-credentials
özelliğine bakın. Yanıt, AMP CORS güvenlik yönergelerine uygun olmalıdır.
Bu örnekte, belirtilen URL'den yapılandırma verilerini yüklemek için config
özelliğini belirtiriz.
<amp-analytics config="https://example.com/analytics.account.config.json">
Yapılandırma Yeniden Yazıcı
Yapılandırma yeniden yazıcı özelliği, analiz sağlayıcılarının sağlanan bir yapılandırmayı dinamik olarak yeniden yazmasına olanak tanımak amacıyla tasarlanmıştır. Bu, uzak yapılandırma özelliğine benzer ancak buna ek olarak, sunucuya yapılan istekte kullanıcı tarafından sağlanan yapılandırmayı içerir. Bu özellik, şu anda yalnızca analiz tedarikçi firması tarafından etkinleştirilebilir.
Bir analiz tedarikçi firması, bir sunucu URL'si ile bir configRewriter özelliği belirtir.
export const VENDOR_ANALYTICS_CONFIG = {
...
'configRewriter': {
'url': 'https://www.vendor.com/amp-config-rewriter',
},
...
}
Çalışma zamanı, sağlanan uzak yapılandırmayla birleştirilmiş, satır içine yerleştirilen yapılandırmayı içeren bir isteği satıcı tarafından verilen configRewriter uç noktasına gönderir. Tedarikçi firma, bu veri sunucusunu yapım için kullanır ve yeniden yazılmış yeni bir yapılandırma döndürür.
Ardından, çalışma zamanı, nihai yapılandırmayı belirlemek için sağlanan tüm yapılandırmaları en yüksek öncelikten en düşüğe doğru birleştirir:
- Yeniden Yazılmış Yapılandırma
- Satır İçine Yerleştirilmiş Yapılandırma
- Tedarikçi firma tarafından tanımlanmış yapılandırma
Değişken Grupları
Değişken Grupları, analiz sağlayıcılarının, kullanıcının kolayca etkinleştirebileceği önceden tanımlanmış bir değişken grubunu gruplamalarına olanak tanıyan bir özelliktir. Daha sonra, bu değişkenler çözümlenir ve belirtilen configRewriter
uç noktasına gönderilir.
Analiz sağlayıcılarının, bu özelliği etkinleştirmek için configRewriter
yapılandırmasının içinde yeni bir varGroups
nesnesi oluşturması gerekir. Böylece yayıncılar, analiz yapılandırmalarında etkinleştirmek istedikleri analiz sağlayıcı tarafından oluşturulan adlandırılmış varGroups
nesnesini ekleyebilir. AMP HTML Değişiklik Kılavuzu tarafından desteklenen tüm değişkenler kullanılabilir. Önemli not: ${varName} çeşitleri kullanılamaz.
Örneğin, yapılandırması şöyle görünen bir tedarikçi firmamız olabilir:
// This is predefined by vendor.
export const VENDOR_ANALYTICS_CONFIG = {
...
'configRewriter': {
'url': 'https://www.vendor.com/amp-config-rewriter',
'varGroups' : {
'group1': {
'referrer': 'DOCUMENT_REFERRER',
'source': 'SOURCE_URL',
'group2': {
'title': 'TITLE',
},
},
},
},
...
}
Sağlayıcının <amp-analytics>
yapılandırmasında, belirtilen varGroups
nesnesi için {enabled: true}
değerini ekleyerek hangi değişken gruplarının etkinleştirileceğini belirtebilirsiniz. enabled
, ayrılmış bir kelimedir ve değişken adı olarak kullanılamaz.
Aşağıdaki örnekte hem group1
hem de group2
etkinleştirilmiştir. Özel olarak etkinleştirilmemiş gruplar yoksayılır. Ardından, çalışma zamanı tüm bu etkinleştirilmiş değişkenleri çözümler ve yapılandırma yeniden yazıcı URL'sine gönderilecek olan tek bir configRewriter.vars
nesnesinde birleştirir.
/* Included on publisher page */
<amp-analytics type="myVendor" id="myVendor" data-credentials="include">
<script type="application/json">
{
"configRewriter": {
"varGroups": {
"group1": {
"enabled": true
},
"group2": {
"enabled": true
}
}
}
}
</script>
</amp-analytics>
Bu örnekte, istek gövdesi aşağıdaki gibir görünür:
/* Sent to configuration rewriter server. */
"configRewriter": {
"vars": {
"referrer": "https://www.example.com",
"source": "https://www.amp.dev",
"title": "Cool Amp Tips"
}
}
Yapılandırma veri nesneleri
Talepler
requests
yapılandırma nesnesi, verilerin bir analiz platformuna aktarılması için kullanılan URL'lerin yanı sıra isteğin toplu işlem veya raporlama davranışını da belirtir. request-name
, belirli bir etkinliğe (ör. pageview
, event
vb.) yanıt olarak hangi isteğin gönderilmesi gerektiğini belirtir. request-value
bir https URL'si içeriyorsa değer, diğer isteklere veya değişkenlere başvurabilen yer tutucu jetonlar içerebilir. request-value
, isteğe bağlı istek yapılandırmaları içeren bir nesne de olabilir.
İstek yapılandırmaları
Nesneye sahip bir isteği tanımlamaya yönelik özellikler şunlardır:
baseUrl
: İsteğin URL'sini tanımlar (zorunlu).reportWindow
: Raporlama isteklerini durdurma zamanını (saniye cinsinden) belirtmek için kullanılan isteğe bağlı bir özellik.important: true
değerine sahip tetikleyici, maksimum rapor aralığı kısıtlamasını geçersiz kılar.
Bu örnekteki tüm istekler geçerlidir.
"requests": {
"base": "https://example.com/analytics?a=${account}&u=${canonicalUrl}&t=${title}",
"pageview": {
"baseUrl": "${base}&type=pageview"
},
"event": {
"baseUrl": "${base}&type=event&eventId=${eventId}",
"batchInterval": 5,
"reportWindow" : 30
}
}
Bazı analiz sağlayıcıları, type
özelliği aracılığıyla kullandığınız önceden sağlanan bir yapılandırmaya sahiptir. Bir analiz sağlayıcısı kullanıyorsanız istek bilgilerini eklemeniz gerekmeyebilir. İsteklerin yapılandırılmasının gerekip gerekmediğini ve nasıl yapılandırılacaklarını öğrenmek için tedarikçi firmanızın dokümanlarına bakın.
Toplu işleme yapılandırmaları
İstek pinglerinin sayısını azaltmak için istek yapılandırmasında toplu işleme davranışları belirtebilirsiniz. Aynı isteği kullanan triggers
nesnesinin extraUrlParams
öğeleri, isteğin baseUrl
öğesine eklenir.
Toplu işleme özellikleri şunlardır:
batchInterval
: Bu özellik, istek sırasındaki istek pinglerini temizleme zaman aralığını (saniye cinsinden) belirtir.batchInterval
, bir sayı veya bir sayı dizisi olabilir (minimum zaman aralığı 200 ms'dir). İstek, dizideki her değere uyar ve ardından, dizinin sonuna ulaştığında son aralık değerini (veya tek değeri) tekrar eder.
Örneğin, aşağıdaki yapılandırma 2 saniyede bir tek bir istek pingi gönderir ve bir örnek istek pingi https://example.com/analytics?rc=1&rc=2
gibi görünür.
"requests": {
"timer": {
"baseUrl": "https://example.com/analytics?",
"batchInterval": 2,
}
}
"triggers": {
"timer": {
"on": "timer",
"request" : "timer",
"timerSpec": {
"interval": 1
},
"extraUrlParams": {
"rc": "${requestCount}"
}
}
}
Aşağıdaki yapılandırma, 1 saniye sonra ilk istek pingini göndermesinin ardından her 3 saniyede bir, bir istek pingi gönderir. İlk istek pingi https://example.com/analytics?rc=1
, ikinci istek pingi https://example.com/analytics?rc=2&rc=3&rc=4
gibi görünür.
"requests": {
"timer": {
"baseUrl": "https://example.com/analytics?",
"batchInterval": [1, 3],
}
}
"triggers": {
"timer": {
"on": "timer",
"request" : "timer",
"timerSpec": {
"interval": 1
},
"extraUrlParams": {
"rc": "${requestCount}"
}
}
}
Değişkenler
amp-analytics
bileşeni, isteklerde kullanılabilecek birçok temel değişken tanımlar. Bu değişkenlerin tamamını içeren bir listeyi amp-analytics
Değişkenler Kılavuzu'nda bulabilirsiniz. Buna ek olarak, AMP HTML Değişiklik Kılavuzu tarafından desteklenen tüm değişkenler de desteklenir.
vars
yapılandırma nesnesi, yeni anahtar/değer çiftlerini tanımlamak veya request
değerlerinde başvurulabilecek mevcut değişkenleri geçersiz kılmak için kullanılabilir. Yeni değişkenler, yaygın olarak yayıncıya özel bilgileri belirtmek için kullanılır. Diziler, virgül sınırlayıcısını korurken, URL kodlaması ayrı olarak yapılması gereken bir değer listesi belirtmek için kullanılabilir.
"vars": {
"account": "ABC123",
"countryCode": "tr",
"tags": ["Swift,Jonathan", "Gulliver's Travels"]
}
Ek URL Parametreleri
extraUrlParams
yapılandırma nesnesi, isteğe dahil edilecek ek parametreleri belirtir. Varsayılan olarak, ek URL parametreleri her zamanki "&foo=baz" kuralı aracılığıyla bir istek URL'sinin sorgu dizesine eklenir.
Bir isteğe &a=1&b=2&c=3
parametrelerini ekleyecek bir örneği burada bulabilirsiniz:
"extraUrlParams": {
"a": "1",
"b": "2",
"c": "3"
}
useBody
etkinse ve istek, beacon
veya xhrpost
aktarım yöntemi aracılığıyla gönderilirse extraUrlParams
, URL'nin yerine istek gövdesi aracılığıyla gönderilebilir. Bu durumda, parametreler URL kodlamalı olmaz veya birleştirilmez. Daha ayrıntılı bilgi için Ek URL Parametreleri için Gövdeyi Kullanma konusuna bakın.
extraUrlParamsReplaceMap
özelliği, extraUrlParams
yapılandırmasında anahtarları önceden işlemek için String.replace()
işleminde parametre görevi gören bir anahtar ve değer eşlemesi belirtir. Örneğin, bir extraUrlParams
yapılandırması "page.title": "The title of my page"
ve extraUrlParamsReplaceMap
, "page.": "_p_"
değerini tanımlarsa isteğin sonuna &_p_title=The%20title%20of%20my%20page%20
eklenir.
extraUrlParams
kullanmak için extraUrlParamsReplaceMap
öğesinin kullanılması gerekmez. extraUrlParamsReplaceMap
tanımlanmazsa herhangi bir dize değişikliği olmaz ve extraUrlParams
içinde tanımlanan dizeler oldukları gibi kullanılır.
useBody
etkinse ve istek, beacon
veya xhrpost
aktarım yöntemi aracılığıyla gönderilirse extraUrlParamsReplaceMap
dize değişikliği, yalnızca extraUrlParams
yapılandırmasının üst düzey anahtarlarında gerçekleştirilir.
Tetikleyiciler
triggers
yapılandırma nesnesi, bir analiz isteğinin gönderilmesi gerektiği zamanı açıklar. triggers
özelliği, tetikleyici adı ve tetikleyici yapılandırmasının anahtar/değer çiftini içerir. Tetikleyici adı, alfasayısal karakterlerden (a-zA-Z0-9) oluşan herhangi bir dize olabilir. Daha düşük önceliğe sahip bir yapılandırmadaki tetikleyiciler, daha yüksek önceliğe sahip bir yapılandırmada bulunan, aynı adlara sahip tetikleyiciler tarafından geçersiz kılınır.
on
(zorunlu) Dinlenecek etkinlik. Geçerli değerler şunlardır:render-start
,ini-load
,click
,scroll
,timer
,visible
,hidden
,user-error
,access-*
vevideo-*
request
(zorunlu) Gönderilecek isteğin adı (requests
bölümünde belirtildiği gibi).vars
Üst düzey yapılandırmada tanımlanmışvars
değerini geçersiz kılmak veya bu tetikleyiciye özel vars değeri belirtmek için kullanılan anahtar/değer çiftlerini içeren bir nesne.- Toplu işleme davranışını veya rapor aralığını destekleyen isteklerle çalışmak için
important
öğesi belirtilebilir.important
öğesinintrue
değerine ayarlanması, toplu istek sırasının bazı tetikleyicilerle temizlenmesine yardımcı olabilir. Bu durumda, önemli tetikleme etkinliklerini kaybetmeden istek ping sayısını azaltmak mümkündür.important
öğesinintrue
değerine ayarlanması, önemli istek pinglerine gönderilen isteğinreportWindow
değerini de geçersiz kılabilir. selector
veselectionMethod
,click
vevisible
gibi bazı tetikleyiciler için belirtilebilir. Ayrıntılar için Öğe seçici konusuna bakın.scrollSpec
(on
özelliğiscroll
değerine ayarlandığında zorunludur) Bu yapılandırma,scroll
tetikleyicisi ile birlikte kullanılır. Ayrıntılar için lütfen aşağıdakilere göz atın.timerSpec
(on
özelliğitimer
değerine ayarlandığında zorunludur) Bu yapılandırma,timer
tetikleyicisiyle birlikte kullanılır. Ayrıntılar için lütfen aşağıdakilere göz atın.sampleSpec
Bu nesne, isteklerin gönderilmeden önce nasıl örneklenebileceğini tanımlamak için kullanılır. Bu ayar, rastgele girdi veya diğer platform destekli değişkenlere dayalı örneklemeye olanak tanır. Nesne, bir karma oluşturmak için kullanılan bir giriş ve karmanın karşılaması gereken bir eşiği belirten yapılandırmayı içerir.sampleOn
Bu dize şablonu, platform değişkenlerinin doldurulmasıyla genişletilir ve ardından, aşağıdaki eşik altında açıklanan örnekleme mantığının amacına uygun bir sayı üretmek üzere karma oluşturulur.threshold
Bu yapılandırma, belirli ölçütlere uymayan istekleri filtrelemek için kullanılır: Bir isteğin analiz tedarikçi firmasına ulaşması için aşağıdaki mantık gerçekHASH(sampleOn) < threshold
olmalıdır.
videoSpec
(on
özelliğivideo-*
olarak ayarlandığında kullanılır) Bu yapılandırma,video-*
tetikleyicileriyle birlikte kullanılır.
Örneğin, aşağıdaki yapılandırma rastgele girişe dayalı isteklerin %50'sinde veya istemci kimliğine göre %1'de örnekleme yapmak için kullanılabilir.
'triggers': {
'sampledOnRandom': {
'on': 'visible',
'request': 'request',
'sampleSpec': {
'sampleOn': '${random}',
'threshold': 50,
},
},
'sampledOnClientId': {
'on': 'visible',
'request': 'request',
'sampleSpec': {
'sampleOn': '${clientId(cookieName)}',
'threshold': 1,
},
},
},
Öğe seçici
click
ve visible
gibi bazı tetikleyiciler, seçici özelliklerini kullanarak tek bir öğenin veya bir öğe koleksiyonunun belirtilmesine olanak tanır. Farklı tetikleyiciler, bir seçicinin eşleşen tüm öğelere mi yoksa ilk öğeye mi uygulandığını veya tüm öğelerin mi yoksa yalnızca AMP öğelerinin eşleştirilebileceği gibi seçili öğeler üzerinde farklı sınırlamalar ve yorumlar uygulayabilir. Daha fazla ayrıntı için ilgili her bir tetikleyicinin dokümanlarına bakın.
Seçici özellikleri şunlardır:
selector
Bu özellik, CSS/DOM sorgusu kullanan bir öğeyi veya öğe koleksiyonunu bulmak için kullanılır. Öğenin eşleştirilme şeklinin anlamı,selectionMethod
kullanılarak değiştirilebilir. Bu özelliğin değeri şunlardan biri olabilir:- geçerli bir CSS seçici, ör.
#ad1
veyaamp-ad
. :root
- doküman köküyle eşleşen özel bir seçici.
- geçerli bir CSS seçici, ör.
selectionMethod
Belirtildiğinde, bu özellik şu iki değerden birini alabilir:scope
veyaclosest
.scope
,amp-analytics
etiketinin üst öğesinin içinde öğe seçimine izin verir.closest
, belirtilen seçiciyi karşılayanamp-analytics
etiketinin en yakın üst öğesini arar. Varsayılan değer,scope
değeridir.
Yerleştirme oluşturma başlangıç tetikleyicisi
Diğer dokümanları iframe'lerin (ör. reklamlar) içine yerleştiren AMP öğeleri, bir oluşturma başlangıç etkinliği ("on": "render-start"
) bildirebilir. Bu etkinlik genellikle yerleştirilmiş dokümanın oluşturulmasına başlandığını onaylamak mümkün olur olmaz yayınlanır. Belirli bir AMP öğesinin bu etkinliği yayınlayıp yayınlamadığını öğrenmek için öğenin dokümanlarına bakın.
Yerleştirme öğesinin tetikleyicisi, yerleştirmeyi yapan öğeye işaret eden bir seçici
içermelidir:
"triggers": {
"renderStart": {
"on": "render-start",
"request": "request",
"selector": "#embed1"
}
}
Oluşturma başlangıç etkinliği, dokümanın kendisi tarafından da yayınlanabilir ve şu şekilde yapılandırılabilir:
"triggers": {
"renderStart": {
"on": "render-start",
"request": "request"
}
}
İlk yükleme tetikleyicisi
İlk yükleme etkinliği ("on": "ini-load"
), bir AMP öğesinin veya AMP dokümanının ilk içeriği yüklendiğinde tetiklenir.
"İlk yükleme", kapsayıcı ve başlangıç boyutuyla ilişkili olarak tanımlanır. Daha kesin belirtmek gerekirse:
- Bir doküman için: ilk görüntü alanında bulunan tüm öğeler.
- Bir yerleştirme öğesi için: Yerleştirme dokümanında, yerleştirme öğesinin başlangıç boyutu içinde konumlandırılan tüm içerik öğeleri.
- Basit bir AMP öğesi (ör.
amp-img
) için: resim veya video gibi kaynakların kendisi.
Bir yerleştirme veya AMP öğesinin tetikleyicisi, öğeye işaret eden bir seçici
içermelidir:
"triggers": {
"iniLoad": {
"on": "ini-load",
"request": "request",
"selector": "#embed1"
}
}
İlk yükleme etkinliği, dokümanın kendisi tarafından da yayınlanabilir ve şu şekilde yapılandırılabilir:
"triggers": {
"iniLoad": {
"on": "ini-load",
"request": "request"
}
}
Sayfa ve öğe görünürlüğü tetikleyicisi
Sayfa görünür hale geldiğinde bir isteği etkinleştirmek için sayfa görünürlüğü tetikleyicisini ("on": "visible"
) kullanın. Bu tetikleyicinin etkinleşmesi, visibilitySpec
kullanılarak yapılandırılabilir.
"triggers": {
"defaultPageview": {
"on": "visible",
"request": "pageview",
}
}
Öğe görünürlüğü tetikleyicisi, seçici
kullanılarak herhangi bir AMP öğesi veya bir doküman kökü için yapılandırılabilir. Belirtilen öğe, visibilitySpec
kullanılarak özelleştirilebilen görünürlük parametreleriyle eşleştiğinde tetikleyici etkinleşir.
"triggers": {
"defaultPageview": {
"on": "visible",
"request": "elementview",
"selector": "#ad1",
"visibilitySpec": {/* optional visibility spec */}
}
}
Seçicinin bir koleksiyonu değil, yalnızca tek bir öğeyi belirtmek için kullanılabileceğini unutmayın. Öğe, AMP genişletilmiş öğesi veya bir doküman kökü olabilir.
Öğe görünürlüğü tetikleyicisi, öğenin görünürlüğünü izlemeden önce visibilitySpec
öğesindeki waitFor
özelliğiyle belirtilen sinyali bekler. waitFor
değeri belirtilmezse öğenin ini-load
sinyalini bekler. Daha fazla ayrıntı için waitFor
dokümanlarına bakın.
reportWhen
değeri belirtilirse tetikleyici, etkinliği göndermeden önce bu sinyali bekler. Bu, örneğin, sayfa kapatıldığında analiz etkinliklerini gönderme açısından yararlıdır.
Hata tetikleyicisi
Sayfanın yazarı veya sayfanın yayınlanmasında kullanılan yazılımla ilişkilendirilebilen bir hata oluştuğunda kullanıcı hatası etkinliği ("on": "user-error"
) tetiklenir. Bu durum, bir AMP bileşeninin yanlış yapılandırmasını, hatalı yapılandırılmış reklamları veya başarısız onaylamaları içerir ancak bunlarla sınırlı değildir. Kullanıcı hataları, geliştirici konsolunda da bildirilir.
"triggers": {
"userError": {
"on": "user-error",
"request": "error"
}
}
visibilitySpec
, visible
veya hidden
tetikleyicisinin etkinleştiğinde değişmesi için uygulanabilecek bir koşullar ve özellikler grubudur. Birden çok özellik belirtilirse bir isteğin etkinleşmesi için bu özelliklerin tümünün doğru olması gerekir. visibilitySpec
içinde desteklenen yapılandırma özellikleri şunlardır:
waitFor
: Bu özellik, görünürlük tetikleyicisinin görünürlüğü izlemeden önce belirli bir sinyal için beklemesini bildirir.none
,ini-load
verender-start
değerleri desteklenir.waitFor
tanımlanmazsa seçici belirtildiğinde varsayılan olarakini-load
veya aksi haldenone
değerine ayarlanır.reportWhen
: Bu özellik, görünürlük tetikleyicisinin tetikleyiciyi göndermeden önce belirli bir sinyal için beklemesini bildirir. YalnızcadocumentExit
değeri desteklenir.reportWhen
verepeat
aynı visibilitySpec içinde birlikte kullanılamaz.reportWhen
belirtildiğinde, görünürlük gereksinimleri o sırada veya daha önceden karşılanmamış olsa bile raporun sinyal verildiği anda gönderileceğini unutmayın. Tüm alakalı değişkenler (totalVisibleTime
vb.), buvisibilitySpec
öğesindeki görünürlük gereksinimlerine göre doldurulur.continuousTimeMin
vecontinuousTimeMax
: Bu özellikler, bir öğe (veya bir kısmı) belirtilen minimum ve maksimum zamanlar arasında sürekli bir süre için görüntü alanının içinde bulunduğunda bir isteğin etkinleşmesi gerektiğini belirtir. Süreler milisaniye cinsinden ifade edilir.continuousTimeMin
belirtilmezse varsayılan olarak 0 değerine ayarlanır.totalTimeMin
vetotalTimeMax
: Bu özellikler, bir öğe (veya bir kısmı) belirtilen minimum ve maksimum zamanlar arasında bir toplam süre için görüntü alanının içinde bulunduğunda bir isteğin etkinleşmesi gerektiğini belirtir. Süreler milisaniye cinsinden ifade edilir.totalTimeMin
belirtilmezse varsayılan olarak 0 değerine ayarlanır.visiblePercentageMin
vevisiblePercentageMax
: Bu özellikler, bir öğenin bir kısmı belirtilen minimum ve maksimum yüzdeler arasında görüntü alanının içinde görünür olduğunda bir isteğin etkinleşmesi gerektiğini belirtir. 0 ile 100 arasındaki yüzde değerleri geçerlidir. Üst sınırın (visiblePercentageMax
) kapsayıcı olduğunu unutmayın. Her iki sınır 0'a veya 100'e ayarlanmadıkça alt sınır (visiblePercentageMin
) dışlayıcıdır. Her iki sınır da 0'a ayarlanırsa öğe görünmediğinde tetikleyici etkinleşir. Her iki sınır da 100 değerine ayarlanırsa öğe tam olarak görünür olduğunda tetikleyici etkinleşir. Bu özellikler, zamanlamayla ilgili diğer özelliklerle birlikte tanımlandığında, yalnızca bu özelliklerin karşılandığı zaman sayılır.visiblePercentageMin
için varsayılan değer 0 vevisiblePercentageMax
için varsayılan değer 100'dür.repeat
: Bu özelliktrue
değerine ayarlanırsavisibilitySpec
koşullarının karşılandığı her seferinde tetikleyici etkinleşir. Aşağıdaki örnekte, öğe görünümde %51'e, sonra %49'a, ardından tekrar %51'i sayfaya kaydırılırsa tetikleyici iki kez etkinleşir. Ancak,repeat
içinfalse
değeri belirlenmişse tetikleyici bir kez etkinleşir.repeat
öğesinin varsayılan değerifalse
değeridir.reportWhen
verepeat
, aynı visibilitySpec öğesi içinde birlikte kullanılamaz.
visibilitySpec: {
visiblePercentageMin: 50,
repeat: true,
}
visiblePercentageThresholds
, yalnızca visiblePercentageMin
ve visiblePercentageMax
değerleri farklı olan birden fazla visibilitySpec
örneği oluştururken kestirme olarak kullanılabilir. Örneğin, aşağıdakiler eşdeğerdir:
// Two triggers with visibilitySpecs that only differ in visiblePercentageMin and visiblePercentageMax:
"triggers": {
"pageView_30_to_40": {
"on": "visible",
"request": "pageview",
"selector": "#ad1",
"visibilitySpec": {
"visiblePercentageMin": 30,
"visiblePercentageMax": 40,
"continuousTimeMin": 1000,
}
}
"pageView_40_to_50": {
"on": "visible",
"request": "pageview",
"selector": "#ad1",
"visibilitySpec": {
"visiblePercentageMin": 40,
"visiblePercentageMax": 50,
"continuousTimeMin": 1000,
}
}
}
// A single trigger equivalent to both of the above:
"triggers": {
"pageView": {
"on": "visible",
"request": "pageview",
"selector": "#ad1",
"visibilitySpec": {
"visiblePercentageThresholds": [[30, 40], [40, 50]],
"continuousTimeMin": 1000,
}
}
}
Yukarıdaki koşullara ek olarak, visibilitySpec
, burada belgelenen bazı değişkenleri de etkinleştirir.
"triggers": {
"defaultPageview": {
"on": "visible",
"request": "pageview",
"selector": "#ad1",
"visibilitySpec": {
"waitFor": "ini-load",
"reportWhen": "documentExit",
"visiblePercentageMin": 20,
"totalTimeMin": 500,
"continuousTimeMin": 200
}
}
}
Tetikleyicilerin bir parçası olarak sağlanan değişkenlere ek olarak, veri özelliği olarak ek değişkenler/değişken geçersiz kılmaları da belirtebilirsiniz. Bu veri özellikleri kullanılırsa seçici
olarak belirtilen öğenin bir parçası olmaları gerekir.
Tıklama tetikleyicisi
Belirtilen bir öğe tıklandığında bir isteği etkinleştirmek için tıklama tetikleyicisini ("on": "click"
) kullanın. Hangi öğelerin bu isteğin etkinleşmesine neden olacağını denetlemek için seçiciyi
kullanın. Tetikleyici, belirtilen seçicinin eşleştirdiği tüm öğeler için tetiklenir.
"vars": {
"id1": "#socialButtonId",
"id2": ".shareButtonClass"
},
"triggers": {
"anchorClicks": {
"on": "click",
"selector": "a, ${id1}, ${id2}",
"request": "event",
"vars": {
"eventId": 128
}
}
}
Tetikleyicilerin bir parçası olarak sağlanan değişkenlere ek olarak, veri özelliği olarak ek değişkenler/değişken geçersiz kılmaları da belirtebilirsiniz. Bu veri özellikleri kullanılırsa selector
olarak belirtilen öğenin bir parçası olmaları gerekir
Kaydırma tetikleyicisi
Sayfa kaydırıldığında belirli koşullar altında bir isteği etkinleştirmek için kaydırma tetikleyicisini ("on": "scroll"
) kullanın. Bu tetikleyici, bir isteğin gönderilmesini tetikleyen sınırları belirten özel değişkenler sağlar. Bunun etkinleşeceği zamanı kontrol etmek için scrollSpec
nesnesini kullanın:
scrollSpec
Bu nesne,verticalBoundaries
vehorizontalBoundaries
öğelerini içerebilir. Bir kaydırma etkinliğinin etkinleşmesi için iki özellikten en az biri gereklidir. Özelliğin her ikisi için değerler, bir kaydırma etkinliğinin oluşturulduğu sınırları içeren sayı dizileri olmalıdır. Örneğin, aşağıdaki kod snippet'inde, sayfa dikey olarak %25, %50 ve %90 oranında kaydırıldığında kaydırma etkinliği etkinleşir. Buna ek olarak, sayfa kaydırma genişliğinin %90'ına yatay olarak kaydırıldığında etkinlik de tetiklenir. Sayfa performansını korumak için kaydırma sınırları5
'in en yakın katına yuvarlanır.
"triggers": {
"scrollPings": {
"on": "scroll",
"scrollSpec": {
"verticalBoundaries": [25, 50, 90],
"horizontalBoundaries": [90]
},
"request": "event"
}
}
Zamanlayıcı tetikleyicisi
Bir isteğinde düzenli aralıklarla etkinleşmesi için zamanlayıcı tetikleyicisini ("on": "timer"
) kullanın. Bunun etkinleşeceği zamanı denetlemek için timerSpec
öğesini kullanın:
timerSpec
timer
tetikleyici türüyle ilgili spesifikasyon. BirstartSpec
belirtilmezse zamanlayıcı hemen (varsayılan olarak, ayar kaldırılabilir) ve daha sonra, belirtilen bir aralıkta tetiklenir.interval
Zamanlayıcı aralığının saniye cinsinden uzunluğu.maxTimerLength
Saniye cinsinden zamanlayıcının etkinleşeceği maksimum süre.maxTimerLength
değerine ulaşıldığında bir ek istek tetiklenir. Varsayılan değer 2 saattir. BirstopSpec
değeri varsa ancak maxTimerLength belirtilmediyse varsayılan değer sonsuzdur.immediate
Zamanlayıcının hemen tetiklenip tetiklenmeyeceği. Boole değeri, varsayılan olarak true değerini alır
"triggers": {
"pageTimer": {
"on": "timer",
"timerSpec": {
"interval": 10,
"maxTimerLength": 600
},
"request": "pagetime"
}
}
Kullanıcı etkinliklerinin kullandığı zamanları belirleyen bir zamanlayıcıyı yapılandırmak için:
startSpec
Bir zamanlayıcının başlamasını tetiklemeyle ilgili spesifikasyon. Belirli etkinlikleri izlemek içinon
veselector
değerini kullanın.startSpec
değeri içeren ancakstopSpec
değeri içermeyen bir yapılandırma yalnızcamaxTimerLength
değerine ulaşıldıktan sonra durur.stopSpec
Zamanlayıcı durduğunda tetiklemeyle ilgili spesifikasyon.stopSpec
değeri içeren ancakstartSpec
değeri içermeyen bir yapılandırma zamanlayıcıyı hemen başlatır ancak yalnızca belirtilen etkinlikte durdurur.
"triggers": {
"videoPlayTimer": {
"on": "timer",
"timerSpec": {
"interval": 5,
"startSpec": {
"on": "video-play",
"selector": "amp-video"
},
"stopSpec": {
"on": "video-pause",
"selector": "amp-video"
}
},
"request": "videoRequest"
}
}
İç içe yerleştirilmiş zamanlayıcı tetikleyicileri oluşturma hakkında ayrıntılar için tetikleyiciler ile ilgili spesifikasyona bakın. Zamanlayıcıyı başlatmak veya durdurmak için bir zamanlayıcı tetikleyicisinin kullanılmasına izin verilmediğini unutmayın.
Gizli tetikleyici
Sayfa gizlendiğinde bir isteği etkinleştirmek için gizli tetikleyiciyi ("on": "hidden"
) kullanın.
"triggers": {
"defaultPageview": {
"on": "hidden",
"request": "pagehide",
}
}
Bir isteğin yalnızca görünürlük süresi koşulları karşılanırsa etkinleşmesi için bir visibilitySpec
eklenebilir.
"triggers": {
"defaultPageview": {
"on": "hidden",
"request": "pagehide",
"visibilitySpec": {
"selector": "#anim-id",
"visiblePercentageMin": 20,
"totalTimeMin": 3000,
}
}
}
Yukarıdaki yapılandırma şöyle çevrilir:
Sayfa gizlendiğinde, #anim-id öğesi toplamda 3 saniyeden uzun süreyle görünür (görüntü alanının %20'sinden fazla) kaldıysa bir istek tetiklenir.
Erişim tetikleyicileri
AMP Access sistemi, erişim akışında farklı durumlar için çok sayıda etkinlik yayınlar. Erişim tetikleyicileri ("on": "access-*"
) hakkında ayrıntılı bilgi için AMP Access ve Analytics konusuna bakın.
Video analizi tetikleyicileri
Video analizi, yayıncıların bir videonun yaşam döngüsü sırasında gerçekleşen farklı etkinlikleri izlemek için kullanabilecekleri çeşitli tetikleyiciler ("on": "video-*"
) sağlar. AMP Video Analizi konusunda daha fazla ayrıntı bulabilirsiniz.
Taşıma
transport
yapılandırma nesnesi, bir isteğin nasıl gönderileceğini belirtir. Değer, hangi taşıma yöntemlerinin kabul edilebilir olduğunu belirten alanlara sahip bir nesnedir.
beacon
İsteği iletmek içinnavigator.sendBeacon
öğesinin kullanılabileceğini belirtir. Bu işlem, kimlik bilgilerini içeren bir POST isteği gönderir.useBody
öğesi true değerine ayarlanmamışsa istek, boş bir gövdeyle gönderilir.useBody
hakkında daha fazla bilgi için Ek URL Parametreleri için Gövdeyi Kullanma konusuna bakın.xhrpost
İsteği iletmek içinXMLHttpRequest
öğesinin kullanılabileceğini belirtir. Bu işlem, kimlik bilgilerini içeren bir POST isteği gönderir.useBody
öğesi true değerine ayarlanmamışsa istek, boş bir gövdeyle gönderilir.useBody
hakkında daha fazla bilgi için Ek URL Parametreleri için Gövdeyi Kullanma konusuna bakın.image
İsteğin birImage
etiketi oluşturularak gönderilebileceğini belirtir. Bu işlem bir GET isteği gönderir. Boş yanıtlar veya istek hatalarından dolayı konsol uyarılarını gizlemek için"image": {"suppressWarnings": true}
değerini ayarlayın.
MRC tarafından onaylanan tedarikçi firmalar, iframe-transport-vendors.js dosyasına bir URL dizesi ekleyerek dördüncü bir taşıma mekanizması olan "iframe transport"tan yararlanabilir. Bu dize, src
özelliği bu URL'ye ayarlanmış bir iframe'in oluşturulması gerektiğini ve isteklerin, window.postMessage()
aracılığıyla bu iframe'e gönderileceğini belirtir. Bu durumda, isteklerin tam donanımlı URL'ler olması gerekmez. iframe
yalnızca iframe-transport-vendors.js
içinde belirtilebilir, amp-analytics
etiketinin içinde satır içi olarak veya uzak yapılandırma aracılığıyla belirtilemez. Ayrıca, tedarikçi firma çerçevesi, amp-ad-exit tarafından kullanılacak bir yanıt gönderebilir. analytics-iframe-transport-remote-frame.html ve fake_amp_ad_with_iframe_transport.html dosyalarına bakın: İlk dosya, {'collected-data': 'abc'} öğesinin bir yanıt JSON nesnesini gönderir ve ikinci dosya, finalUrl öğesindeki 'abc' değerini 'bar_' olarak değiştirmek için bu nesneyi kullanır.
Yukarıdaki taşıma yöntemlerinin birden fazlası etkinse öncelik iframe
> beacon
xhrpost
> image
şeklinde belirlenir. Yalnızca bir taşıma yöntemi kullanılır ve bu, izin verilen ve kullanılabilecek en yüksek öncelikli yöntem olur. İstemcinin kullanıcı aracısı bir yöntemi desteklemiyorsa etkinleştirilmiş olan bir sonraki en yüksek öncelikli yöntem kullanılır. Varsayılan olarak, yukarıdaki dört yöntem de etkinleştirilir.
Aşağıdaki örnekte bir iframe
URL'si belirtilmemiştir ve beacon
ile xhrpost
, false
değerine ayarlandığından, image
yöntemine göre daha yüksek önceliğe sahip olmalarına rağmen kullanılmaz. image
varsayılan olarak true
değerine ayarlanır ancak burada açıkça belirtilmiştir. İstemcinin kullanıcı aracısı image
yöntemini destekliyorsa bu yöntem kullanılır; aksi takdirde, herhangi bir istek gönderilmez.
"transport": {
"beacon": false,
"xhrpost": false,
"image": true
}
Daha fazla bilgi edinmek için iframe taşıma istemci API'sinin uygulandığı bu örneğe ve söz konusu iframe'i kullanan bu örnek sayfaya bakın. Örnek, amp-analytics
etiketini içeren sahte bir reklam yükler. Sahte reklam içeriğinin, uyulması gereken bazı ek yapılandırma talimatları içerdiğini unutmayın.
Ek URL Parametreleri için Gövdeyi Kullanma
useBody
yapılandırma seçeneği, extraUrlParams
öğesinin URL kodlamalı sorgu parametreleri olarak URL'ye eklenmesi yerine POST istek gövdesine eklenip eklenmeyeceğini belirtir.
useBody
yalnızca beacon
ve xhrpost
taşıma yöntemleri için kullanılabilir. useBody
öğesi true (doğru) değerine ayarlanırsa ve bu taşıma yöntemlerinden biriyle birlikte kullanılırsa extraUrlParams
, POST isteği gövdesinde gönderilir. Aksi takdirde, istek boş bir gövdeyle gönderilir ve extraUrlParams
, URL parametreleri olarak eklenir.
useBody
öğesini kullanarak, extraUrlParams
öğesine iç içe yerleştirilmiş nesneler ekleyebilirsiniz. Ancak, istek useBody
öğesini desteklemeyen diğer taşıma seçeneklerini (ör. image
) kullanırsa iç içe yerleştirilmiş bu nesneler, [object Object]
olarak URL'ye dizeselleştirilir.
"transport": {
"beacon": true,
"xhrpost": true,
"useBody": true,
"image": false
}
Yönlendirme Politikası
Yönlendirme politikası, transport
yapılandırmasında referrerPolicy
alanı olarak belirtilebilir. Şu anda yalnızca no-referrer
değeri desteklenmektedir.
Yönlendirme politikası yalnızca image
taşıması için kullanılabilir. referrerPolicy: no-referrer
belirtilirse beacon
ve xhrpost
taşımaları geçersiz kılınarak false
değerine ayarlanır.
"transport": {
"beacon": false,
"xhrpost": false,
"image": true,
"referrerPolicy": "no-referrer"
}
Bağlayıcılar
linkers
özelliği, alanlar arası kimlik senkronizasyonunu etkinleştirmek için kullanılır. amp-analytics
, sayfada belirtilen giden bağlantılara URL parametresi olarak eklenecek bir “bağlayıcı dizesi” oluşturmak için bir yapılandırma nesnesi kullanır. Bir kullanıcı bu bağlantılardan birini tıkladığında, hedef sayfa, kimlik senkronizasyonu gerçekleştirmek için URL parametresindeki bağlayıcı dizesini okur. Bu genellikle bir AMP proxy alanı ve yayıncı alanındaki kullanıcı oturumlarını birleştirmek için kullanılır.
Bağlayıcı yapılandırmanızı ayarlamayla ilgili ayrıntılar Bağlayıcı Kimliği Yönlendirme konusunda ana hatlarıyla açıklanmıştır
Bu parametreyi kullanmanız gerekirse bu parametrenin nasıl oluşturulduğuna ilişkin bilgiler Bağlayıcı Kimliği Alma bölümünde gösterilmektedir.
Çerezler
cookies
özelliği, doküman URL'sinden QUERY_PARAM
ve LINKER_PARAM
bilgilerini ayıklayarak çerezleri orijinal alana yazmayı destekler. AMP proxy'si uygulanan alandan bir yayıncı alanındaki AMP sayfalarına kimlik senkronizasyonu gerçekleştirmek için linkers
özellikleriyle birlikte kullanılabilir.
cookies
yapılandırmasını ayarlamayla ilgili ayrıntıları AMP Sayfalarında Bağlayıcı Parametreleri Alma bölümünde bulabilirsiniz.
Doğrulama
AMP doğrulayıcı spesifikasyonundaki amp-analytics kurallarına bakın.
<amp-analytics>
için geçerli özellikler
Bunlar, amp-analytics
bileşeninin geçerli özellikleridir:
type
Tedarikçi firmanın türünü belirtir. Ayrıntılar için Analytics tedarikçi firmaları listesine bakın.
Örnek:
<amp-analytics type="googleanalytics" config="https://example.com/analytics.account.config.json"></amp-analytics>
config
Bu, belirtilen uzak bir URL'den bir yapılandırmayı yüklemek için kullanılabilen isteğe bağlı bir özelliktir. Belirtilen URL, HTTPS şemasını kullanmalıdır. Ayrıca, aşağıdaki data-include-credentials
özelliğine bakın. URL, AMP URL değişkenlerini içerebilir. Yanıt, AMP CORS güvenlik yönergelerine uygun olmalıdır.
Örnek:
<amp-analytics config="https://example.com/analytics.config.json"></amp-analytics>
include
değerine ayarlanırsa config
özelliğiyle belirtilen istekte çerez okuma ve yazma özelliği etkinleştirir. Bu, isteğe bağlı bir özelliktir.
data-consent-notification-id
Değer sağlanırsa sayfa, belirtilen HTML öğesi kimliğine sahip bir amp-user-notification kullanıcı tarafından onaylanıncaya (kabul edilinceye) kadar analiz isteklerini işlemez. Bu, isteğe bağlı bir özelliktir.
AMP bileşenleri için analiz
AMP bileşeni geliştiricileri, AMP Analytics'i kullanarak veri koleksiyonunu uygulayabilir. Daha fazla bilgi için lütfen AMP bileşenleri için analizleri uygulama konusuna bakın
Bu belgeyi defalarca okudunuz ama tüm sorularınıza tatmin edici bir yanıt bulamadınız mı? Belki başka kişiler de bu şekilde hissetmiştir: Stack Overflow'dan onlara ulaşın.
Stack Overflow'a git Bir hata veya eksik bir özellik mi buldunuz?AMP projesi, katılımınızı ve katkılarınızı güçlü bir şekilde teşvik ediyor! Açık kaynak topluluğumuzun devamlı bir katılımcısı olacağınızı umuyoruz ancak özel olarak ilgilendiğiniz konularla ilgili tek seferlik katkıları da memnuniyetle karşılıyoruz.
GitHub'a git