Neighbor's Preppy Maltese

    @linusmelb/ga-protocol
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.32 • Public • Published

    GA-protocol - Javascript Wrapper of Google Analytics Measurement Protocol

    forthebadge made-with-typescript forthebadge contribution-is-welcome

    For some hybrid apps(e.g uni-app), it's difficult to use native Google Analytics SDK. This project will help you to construct your data and manually send it to Google Analytics based on the measurement protocol provided by Google.

    Installation

    npm install @linusmelb/ga-protocol

    Usage

    /**
     *  Example usage
     */
    import { GA } from '@linusmelb/ga-protocol';
    const ga = new GA('UA-XXXXXXXXX-X');
    
    // Optinal
    // Default user-agent: ga-protocol/1.0.0
    // Default client-id: 0. It should be a random UUID (version 4) as described in http://www.ietf.org/rfc/rfc4122.txt
    ga.setUserAgent('ga-protocol/1.0.0'); // Optinal. 
    ga.setClientId('123e4567-e89b-12d3-a456-426655440000');    
    
    // Pageview 
    // To debug, go to https://analytics.google.com/analytics/web -> realtime -> Content
    await ga.pageView({
        hostname : 'http://localhost',
        pagePath : '/index',
        pageTitle: 'Hello World',
        cd1      : 'Android', // e.g. System
        cd2      : 'English', // e.g. Language
        // you can add more custom dimensions below... 
    });
    
    // Event 
    // To debug, go to https://analytics.google.com/analytics/web -> realtime -> Events
    await ga.event({
        hostname     : 'http://localhost',
        pagePath     : '/index',
        pageTitle    : 'Hello World',
        eventCategory: 'ga-event',
        eventAction  : 'click',
        eventLabel   : 'test event',
        eventValue   : 0,
        cd1          : 'Android', // e.g. System
        cd2          : 'English', // e.g. Language
        // you can add more custom dimensions below... 
    });
    
    /*
     * To solve: Uni-app使用axios在真机运行时会提示: adapter is not a function
     * 
     * You need to define your own axios adapter:
     */
    const adapter = (config, resolve, reject) => {
        uni.request({
            method: config.method.toUpperCase(),
            url: config.url,
            header: config.headers,
            data: config.data,
            dataType: config.dataType,
            responseType: config.responseType,
            sslVerify: config.sslVerify,
            success: function (response) {
                response = {
                    data: response.data,
                    status: response.statusCode,
                    errMsg: response.errMsg,
                    header: response.header,
                    config: config
                };
                resolve(response);
            },
            fail: function (response) {
                reject(response);
            }
        })
    };
    # Replace default axios adapter with your own handler
    ga.setAxiosAdapter(adapter);

    To test locally

    # clone from repo
    git clone https://github.com/LinusMelb/GA-protocol.git
    
    # install dependencies
    npm install
    
    # run test
    npm run test

    TODO

    • [x] Send pageview
    • [x] Send event
    • [x] Send pageview with custom dimension
    • [x] Send event with custom dimension
    • [ ] Send enhanced ecommerce event

    Install

    npm i @linusmelb/ga-protocol

    DownloadsWeekly Downloads

    6

    Version

    1.0.32

    License

    MIT

    Unpacked Size

    25.3 kB

    Total Files

    16

    Last publish

    Collaborators

    • linusmelb