appmetrica 1.0.7
API for integration with Yandex AppMetrica
License: BSD
Keywords: appmetrica

==========
AppMetrica
==========

Application for integrating with Yandex AppMetrica https://appmetrica.yandex.ru/

Yandex Docs https://tech.yandex.ru/appmetrica/doc/mobile-api/push/use-cases-docpage/

.. image:: https://travis-ci.org/MyBook/appmetrica.svg?branch=master
    :target: https://travis-ci.org/MyBook/appmetrica
.. image:: https://codecov.io/gh/MyBook/appmetrica/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/MyBook/appmetrica

Before using API it is necessary:

1. Get `application id` from your account in appmetrica.yandex.ru

2. [Generate access token](https://tech.yandex.ru/appmetrica/doc/mobile-api/intro/authorization-docpage/)

Send push
---------

1. Create `API` instance::

    from appmetrica.push.api import PushAPI

    api = PushAPI(application_id, access_token)

2. Create group to combine the sending in the report::

    group_id = api.create_group('test-push-1', send_rate=500)

3. Pass `group_id`, `device list` and `message` to send_push method and call::

    from appmetrica.push.api import TokenTypes

    transfer_id = api.send_push(group_id, devices=devices, ios_message=ios_message,
                                android_message=android_message, tag='harry potter')

    devices - list of token objects like:
        [
            {
                "id_type": TokenTypes.APPMETRICA_DEVICE_ID,
                "id_values": ["123456789", "42"]
            },
            {
                "id_type": TokenTypes.IOS_IFA,
                "id_values": ["8A690667-6204-4A6A-9B38-85DE016....."]
            },
            {
                "id_type": TokenTypes.ANDROID_PUSH_TOKEN,
                "id_values": ["eFfxdO7uCMw:APA91bF1tN3X3BAbiJXsQhk-..."]
            }
        ]

    ios_message - push message for ios devices
    android_message - push message for android devices:
        {
            "silent": false,
            "content": {
                "title": "string",
                "text": "string",
                "sound": "disable",
                "data": "string"
            }
        }

4. To check status of push call `check_status` method::

    status = api.check_status(transfer_id)


List of available groups
------------------------

1. Create `API` instance::

    from appmetrica.push.api import PushAPI

    api = PushAPI(application_id, access_token)

2. Get list of groups

    group_id = api.get_groups()


Export tokens
-------------

1. Create `API` instance::

    from appmetrica.export.api import ExportAPI

    api = ExportAPI(application_id, access_token)

2. Call push_tokens method with necessary fields::

    data = api.export_push_tokens('token', 'ios_ifa', 'google_aid')


Export devices
--------------

1. Create `API` instance::

    from appmetrica.export.api import ExportAPI

    api = ExportAPI(application_id, access_token)

2. Call push_tokens method with necessary fields::

    date_till = datetime.now()
    date_from = date_till - timedelta(days=7)

    data = api.export_installations('ios_ifv', date_from=date_from, date_till=date_till)



Publish a release on PyPi
-------------------------

Install `twine <https://pypi.org/project/twine/>`_ globally::

  pip install twine

1. Don't forget to bump the package version::

    __version__ = '1.0.5'

2. Build the release::

    python setup.py sdist bdist_wheel

3. Publish the release on PyPi::

    twine upload dist/*


Changelog
---------


1.0.6 (2020-11-11)
------------------
* Add send rate when create appmetrica group


1.0.5 (2020-10-01)
------------------
* Add retry for appmetrica request and declare python 3.8 support


1.0.4 (2020-06-26)
------------------
* Allow to send raw data


1.0.3 (2019-08-04)
------------------
* Declare python 3.7 support


1.0.2 (2019-01-09)
------------------
* Increased request timeout to 30 seconds


1.0.1 (2018-12-17)
------------------
* Replace deprecated `send` method to `send-batch`


1.0.0 (2017-12-14)
------------------
* Initial release