قياس الحملات

يقدّم هذا المستند نظرة عامة حول كيفية قياس الحملات ومصادر الزيارات باستخدام الإصدار 4 من حزمة تطوير البرامج (SDK) لخدمة "إحصاءات Google"، وذلك لنظام التشغيل Android.

نظرة عامة

يتيح قياس الحملات في "إحصاءات Google" إحالة الحملات ومصادر الزيارات إلى نشاط المستخدم داخل تطبيقك. تتوفّر هذه الخيارات لإحالة الحملات ومصادر الزيارات في الإصدار 4 من حزمة تطوير البرامج (SDK) لخدمة "إحصاءات Google" لنظام التشغيل Android:

ستوضّح الأقسام التالية أوقات وكيفية تنفيذ كل نوع من أنواع قياس الحملات في تطبيقك.

إحالة حملة Google Play

يتيح لك قياس أداء الحملة على Google Play معرفة الحملات ومصادر الزيارات التي توجّه المستخدمين إلى تنزيل تطبيقك من "متجر Google Play". ننصح جميع مطوّري البرامج بتنفيذ قياس حملة "متجر Google Play".

تنفيذ إحالة حملة Google Play

يوفِّر "متجر Google Play" تثبيت لمُحيل التطبيق لمطوّري البرامج لاسترداد محتوى الإحالة من Google Play بأمان. تعرض واجهة برمجة التطبيقات هذه قيمة معلمة المُحيل المستخدمة للوصول إلى صفحة تطبيقك على متجر Google Play إذا كانت موجودة.

لإحالة تنزيل تطبيق إلى حملة، يجب إضافة معلّمة مُحيل إلى أي روابط تشير إلى "متجر Google Play"، وإضافة واجهة برمجة التطبيقات لمُحيل التثبيت في Play إلى تطبيقك لتلقّي معلومات الحملة المتضمّنة في الهدف في أداة تتبُّع "إحصاءات Google" وإعدادها.

1- أزِل جهاز استقبال "إحصاءات Google" من ملف AndroidManifest.xml.

في حال تم تنفيذ جهاز استقبال إدارة العلامات من Google أيضًا، يمكنك إزالته من ملف البيان أيضًا.

2- أضِف اعتمادية إلى مكتبة واجهة برمجة التطبيقات لمُحيل التثبيت.

لإضافة الاعتمادية، أدرِج ما يلي في build.gradle:

dependencies {
    ...
    implementation 'com.android.installreferrer:installreferrer:1.1'
}

3- وعليك الاتصال بواجهة برمجة التطبيقات لمُحيل التثبيت في نشاط إطلاق تطبيقك.

استخدِم واجهة برمجة التطبيقات لمُحيل التثبيت لاسترداد عنوان URL للمُحيل لحزمة التطبيق المثبّتة، ثم تمرِّر قيمة عنوان URL إلى مستقبِل "إدارة العلامات من Google" أو "إحصاءات Google". اتبع عملية تنفيذ مشابهة للرمز التالي لاستخدام واجهة برمجة التطبيقات لمُحيل التثبيت في نشاط تشغيل تطبيقك.

إذا كانت لديك نقاط إدخال متعددة في التطبيق، مثل الروابط لصفحات في التطبيق في أجزاء معيّنة، يمكنك تنفيذ الطرق الموصوفة في ActivityLifecycleListener والتي يتم تشغيلها من خلال ActivityLifecycleCallbacks.

.
package com.example.myapplication;

import static com.android.installreferrer.api.InstallReferrerClient.InstallReferrerResponse;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;

import com.android.installreferrer.api.InstallReferrerClient;
import com.android.installreferrer.api.InstallReferrerStateListener;
import com.android.installreferrer.api.ReferrerDetails;
import com.google.android.gms.analytics.CampaignTrackingReceiver;
import com.google.tagmanager.InstallReferrerReceiver;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

public class MainActivity extends AppCompatActivity {

    private final Executor backgroundExecutor = Executors.newSingleThreadExecutor();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkInstallReferrer();
    }

    // TODO: Change this to use whatever preferences are appropriate. The install referrer should
    // only be sent to the receiver once.
    private final String prefKey = "checkedInstallReferrer";

    void checkInstallReferrer() {
        if (getPreferences(MODE_PRIVATE).getBoolean(prefKey, false)) {
            return;
        }

        InstallReferrerClient referrerClient = InstallReferrerClient.newBuilder(this).build();
        backgroundExecutor.execute(() -> getInstallReferrerFromClient(referrerClient));
    }

    void getInstallReferrerFromClient(InstallReferrerClient referrerClient) {

        referrerClient.startConnection(new InstallReferrerStateListener() {
            @Override
            public void onInstallReferrerSetupFinished(int responseCode) {
                switch (responseCode) {
                    case InstallReferrerResponse.OK:
                        ReferrerDetails response = null;
                        try {
                            response = referrerClient.getInstallReferrer();
                        } catch (RemoteException e) {
                            e.printStackTrace();
                            return;
                        }
                        final String referrerUrl = response.getInstallReferrer();


                        // TODO: If you're using GTM, call trackInstallReferrerforGTM instead.
                        trackInstallReferrer(referrerUrl);


                        // Only check this once.
                        getPreferences(MODE_PRIVATE).edit().putBoolean(prefKey, true).commit();

                        // End the connection
                        referrerClient.endConnection();

                        break;
                    case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
                        // API not available on the current Play Store app.
                        break;
                    case InstallReferrerResponse.SERVICE_UNAVAILABLE:
                        // Connection couldn't be established.
                        break;
                }
            }

            @Override
            public void onInstallReferrerServiceDisconnected() {

            }
        });
    }

    // Tracker for Classic GA (call this if you are using Classic GA only)
    private void trackInstallReferrer(final String referrerUrl) {
        new Handler(getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                CampaignTrackingReceiver receiver = new CampaignTrackingReceiver();
                Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
                intent.putExtra("referrer", referrerUrl);
                receiver.onReceive(getApplicationContext(), intent);
            }
        });
    }

    // Tracker for GTM + Classic GA (call this if you are using GTM + Classic GA only)
    private void trackInstallReferrerforGTM(final String referrerUrl) {
        new Handler(getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                InstallReferrerReceiver receiver = new InstallReferrerReceiver();
                Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
                intent.putExtra("referrer", referrerUrl);
                receiver.onReceive(getApplicationContext(), intent);
            }
        });
    }

}

4- إضافة معلّمات حملات "إحصاءات Google" إلى عناوين URL على Google Play

بعد ذلك، أضِف معلَمة referrer إلى أي عناوين URL سيتم ربطها مباشرةً في "متجر Google Play" واضبط قيمة تلك المعلّمة على سلسلة من معلّمات الحملات في "إحصاءات Google" تصف المصدر، كما هو موضّح في المثال التالي:

https://play.google.com/store/apps/details?id=com.example.application
&referrer=utm_source%3Dgoogle
%26utm_medium%3Dcpc
%26utm_term%3Drunning%252Bshoes
%26utm_content%3Dlogolink
%26utm_campaign%3Dspring_sale

للتعرّف على كيفية إنشاء سلاسل معلّمات الحملات، استخدِم أداة إنشاء عناوين URL في Google Play، أو ارجِع إلى قسم المراجع معلّمات الحملة.

الإحالة العامة للحملة ومصادر الزيارات

بعد تثبيت التطبيق، قد يتم تشغيله عن طريق إحالات من حملات إعلانية أو مواقع إلكترونية أو تطبيقات أخرى. في هذا السيناريو، قد يتم نسب مصادر الزيارات أو الحملات التسويقية إلى نشاط المستخدم في الجلسات اللاحقة من خلال إعداد معلّمات الحملة على أداة التتبّع مباشرةً باستخدام الطريقة setCampaignParamsFromUrl.

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// In this example, campaign information is set using
// a url string with Google Analytics campaign parameters.
// Note: This is for illustrative purposes. In most cases campaign
//       information would come from an incoming Intent.
String campaignData = "http://examplepetstore.com/index.html?" +
    "utm_source=email&utm_medium=email_marketing&utm_campaign=summer" +
    "&utm_content=email_variation_1";

// Campaign data sent with this hit.
t.send(new HitBuilders.ScreenViewBuilder()
    .setCampaignParamsFromUrl(campaignData)
    .build()
);

راجِع الإعدادات المتقدِّمة للحصول على تفاصيل عن طريقة getTracker.

معلّمات الحملة

يتم استخدام معلّمات الحملات لتمرير معلومات عن مصادر الزيارات والحملات التي تجذب المستخدمين إلى تطبيقك.

يحتوي الجدول أدناه على معلمات الحملة المتاحة التي يمكن استخدامها في Google Play أو قياس الحملات العامة:

المعلمة الوصف أمثلة
utm_source مصدر الحملة، يُستخدم لتحديد محرك بحث أو نشرة إخبارية أو مصدر آخر utm_source=google
utm_medium وسيط الحملة؛ يُستخدم لتحديد الوسيط، مثل البريد الإلكتروني أو تكلفة النقرة (CPC) utm_medium=cpc
utm_term عبارة الحملة المستخدمة مع نتائج البحث المدفوعة لتقديم الكلمات الرئيسية للإعلانات utm_term=running+shoes
utm_content محتوى الحملة: يتم استخدامه لاختبارات أ/ب والإعلانات التي تستهدف المحتوى لتمييز الإعلانات أو الروابط التي تشير إلى عنوان URL نفسه utm_content=logolink
utm_content=textlink
utm_campaign اسم الحملة، يُستخدم لتحليل الكلمات الرئيسية لتحديد عرض ترويجي لمنتج أو حملة استراتيجية معيّنة utm_campaign=spring_sale
gclid معلّمة وضع العلامات التلقائي في "إعلانات Google"، ويتم استخدامها لقياس الإعلانات. يتم إنشاء هذه القيمة ديناميكيًا ويجب عدم تعديلها مطلقًا.

أداة إنشاء عناوين URL في Google Play

استخدِم الأداة أدناه لإنشاء عناوين URL لقياس أداء حملة Google Play.