Notyfikacje Push – Infobip Push – Tutorial

Notyfikacje Push są popularną formą informowania użytkowników na temat nowości, promocji, ofert i wszelkich wiadomości jakich chcielibyśmy naszym odbiorcom przekazać. Sama ich implementacja nie zalicza się do najprostsztycj niemniej możemy skorzystać z zewnętrznej platformy takiej jak infobip push by ułatwić sobie to zadanie.

 

Usługa dostępna jest pod adresem https://push.infobip.com W przypadku niewielkich aplikacji usługa jest w pełni darmowa pozwalająca nam stworzyć 3 aplikacje oraz wysłać 10 tysięcy notyfikacji. Niestety przy większej grupie odbiorców przyjdzie nam już zapłacić 75 € lub 300 € w zależności od wersji na jaką się zdecydujemy.
 
Na początku tworzymy nasze konto. Jak zawsze podajemy nasz login, hasło i adres email. Niestety aby w pełni korzystać z infobip push będziemy później w celu weryfikacji podać nasz numer telefonu.
 
Po zalogowaniu będziemy mieli dostęp do panelu. Tworzymy nową aplikację Podajemy w niej nazwę aplikacji oraz jej opis i ewentualnie zdjęcie. Żeby wszystko działało poprawnie potrzebujemy jeszcze numer API usługi Google Cloud Messaging (API key (GCM)). Google Cloud Messaging jednak w ostatnim czasie zamieniło się na Firebase Cloud Messaging. Tak więc aby otrzymać klucz API musimy udać się pod https://console.firebase.google.com/
 
p2
 
p4
 
Tam rejestrujemy swój projekt podając jego nazwe. W panelu wchodzimy pod Project Settings -> Cloud Messaging i kopiujemy server key i wklejamy go do panelu InfoBip Push. Następnym krokiem jest zaimplementowanie rozwiązania w aplikacji.
 
p5
 
Pobieramy bibliotekę https://push.infobip.com/downloads/infobip-push-2.0.1.aar uruchamiamy android studio i tworzymy nowy projekt, minimalna wersja androida to 15. Importujemy do projektu dopiero co ściągniętą bibliotekę File-> New ->New module -> Import .JAR/.AAR package
 
Dodatkowo bibloteki jakie potrzbujemy to google play, Retrofit, Gson, ReactiveX. Dodajemy wszystkie zalezności do pliku gradle.
 

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"

    defaultConfig {
        applicationId "com.testpush"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile project(':infobip-push-2.0.1')

    compile 'com.android.support:support-v13:24.0.0'
    compile 'com.android.support:appcompat-v7:24.+'
    compile 'com.google.android.gms:play-services:6.1.+'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.0.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'io.reactivex:rxjava:1.0.10'
    compile 'io.reactivex:rxandroid:0.24.0'

    compile 'com.github.oxo42:stateless4j:2.5.0'
}

Przechodzimy do pliku AndroidManifest.xml Dodajemy tutaj wszystkie niezbędne pozwolenia jak łączenie się z internetem i otrzymywanie notyfikacji push. Przy notyfikacji push musimy podać nazwę naszego pakietu jak w pliku poniżej. Nie możemy też zapomnieć o Services i BrodcasReciverach oraz meta tagu informującym o wersji biblioteki google play. Jeśli chcemy przesyłać media w naszych wiadomościach musimy dodać odpowiednią aktywność i ustawić hardwareAccelerated=”true”.
 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.testpush">



    <uses-permission android:name="com.testpush.permission.C2D_MESSAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <permission
        android:name="com.testpush.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name="com.infobip.push.PushActionService"/>
        <service android:name="com.infobip.push.GcmService"/>

        <receiver android:name="com.infobip.push.GcmReceiver"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>

                <category android:name="com.testpush"/>
            </intent-filter>
        </receiver>
        <receiver android:name="com.infobip.push.PushActionReceiver"/>
        <receiver
            android:name="com.infobip.push.ConsistencyAlarmReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
        </receiver>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="com.infobip.push.activities.MediaActivity"
            android:hardwareAccelerated="true"
            android:screenOrientation="portrait">
        </activity>

        <activity
            android:name="com.testpush.MediaActivity"
            android:label="@string/title_activity_media" >
        </activity>
    </application>

</manifest>

Na konieć zostaję nam zaimplementowanie kodu w aplikacji, prezentuję się on następująco:
 

package com.testpush;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.infobip.push.Configuration;
import com.infobip.push.Notification;
import com.infobip.push.PushClient;
import com.infobip.push.activities.MediaActivity;

public class MainActivity extends AppCompatActivity {

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


        Configuration pushLibraryConfiguration =
                Configuration.customConfiguration(getApplication())
                        .applicationId("0iedbanus3w4")                //Numer identyfikacyjny aplikacje "
Application ID" znajdujący sie w panelu ibnfobip
                        .applicationSecret("4lqwcrq4l5nzlv9")           //"Application secret" wygenerowany przez aplikacje znajdujący się również w panelu infoBip
                        .projectNumber("761011732022")  //Numer Id aplikacji możemy ją znaleźć w panelu FCM obok server key (Sender id)
                        .production(false)
                        .build();
        PushClient.configure(getApplication(), pushLibraryConfiguration);
        PushClient.start();

//Tworzenie nowej aktywności w której odbieramy media wysłane z panelu infobip

        Intent onMediaNotificationClickIntent = new Intent(getApplicationContext(), MediaActivity.class);
        Notification.DefaultNotificationHandler.onNotificationClickIntent(
                onMediaNotificationClickIntent,
                Notification.DefaultNotificationHandler.NotificationType.media

        );

    }

}
public class MediaActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String jsonData = getIntent().getExtras().getString(
                Notification.DefaultNotificationHandler.INTENT_EXTRAS_KEY
        );
    }
}

W panelu info bip możemy ustawić temat wiadomości, krótką informacje o wiadomości oraz treść przesyłanej wiadomości w następujący sposób:
 
p6
 
p7
 
p8
 
Gdy wyszlemy notyfikacje pojawi nam się taki oto wynik:

and1img2

 
InfoBip pozwala na szybkie i proste wysyłanie wiadomości. Ponadto istnieje możliwość identyfikowania grupowania czy identyfikowania pojedynczych użytkowników. Wysyłania wiadomości do osób z wybranego regionu świata czy reagowanie na wydarzenia takie jak dostarczenie wiadomości, klikniecie na wiadomość. W celu zdobycia większej informacji odsyłam zainteresowanych do dokumentacji https://push.infobip.com/docs/platforms/android#androidLibrary

Jedno przemyślenie nt. „Notyfikacje Push – Infobip Push – Tutorial

  1. Very quickly this web page will be famous amid all blogging and site-building visitors, due to it’s pleasant content.

Dodaj komentarz

WordPress Video Lightbox Plugin