Tạo push notification với XtremePush
Chào các bạn, hôm nay mình giới thiệu với các bạn một service cho phép chúng ta có thể gửi push notification tới các device khác nhau đó là XtremePush. Tại sao mình lại ham hố chọn chủ đề này, à tại vì là thấy nó ứng dụng nhiều mà chưa thấy có nhiều bài viết tiếng việt giới thiệu về cái này. Đầu ...
Chào các bạn, hôm nay mình giới thiệu với các bạn một service cho phép chúng ta có thể gửi push notification tới các device khác nhau đó là XtremePush. Tại sao mình lại ham hố chọn chủ đề này, à tại vì là thấy nó ứng dụng nhiều mà chưa thấy có nhiều bài viết tiếng việt giới thiệu về cái này.
Đầu tiên chúng ta cần có một tài khoản google console. Sau đó tạo một project google console, vào APIs & auth tạo một server key. Copy chúng lại. Vào API -> Google Clound Message và enable nó. Tiếp theo chúng ta cần có một tài khoản XtremePush(Có thể đăng ký tại xtremepush.com). Sau khi đăng nhập XtremePush, tạo project mới. Vào apps setting và copy APP key lại.
Mở android studio tạo project với package: com.framgia.push. Download sdk tại địa chỉ sau: https://s3-eu-west-1.amazonaws.com/xtremepush-libs/XtremePush-android-a-26072015.zip
Tiếp đến tạo một thư mục aars sau đó chuyển file sdk vừa download về vào thư mục. Tham khảo hình: Thêm thư viện ExtremePush tới dependencies:
compile(name:'XtremePush_lib', ext:'aar')
Thêm version của Android Support Version mới nhất:
compile "com.android.support:support-v4:22.0.0"
Cũng thêm version Google play services:
`compile 'com.google.android.gms:play-services-gcm:+'` `compile 'com.google.android.gms:play-services-location:+'`
Cuối cùng add các dependencies:
compile 'com.google.code.gson:gson:2.3.1' compile 'com.loopj.android:android-async-http:1.4.6' compile 'com.squareup:otto:1.3.6'
Sync cho project.
Tiếp đến cùng Modify file AndroidManifest.xml: Về permission cho Extremepush và Google clound message:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-feature android:name="android.hardware.bluetooth_le" android:required="false" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.framgia.push.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.framgia.push.permission.C2D_MESSAGE" />
Tiếp tới các activity và service:
<activity android:name="ie.imobile.extremepush.ui.DisplayPushActivity" android:label="Push received" android:theme="@android:style/Theme.Dialog" android:exported="false" /> <activity android:name="ie.imobile.extremepush.ui.WebViewActivity" android:exported="false" /> <service android:name="ie.imobile.extremepush.location.ProxymityAlertReceiver"/> <activity android:name="ie.imobile.extremepush.ui.LocationDialogActivity" android:label="Locations are not available" android:theme="@android:style/Theme.Dialog" android:exported="false" /> <service android:name="ie.imobile.extremepush.beacons.BeaconLocationService" /> <service android:enabled="true" android:exported="true" android:isolatedProcess="false" android:label="iBeacon" android:name="com.radiusnetworks.ibeacon.service.IBeaconService"> </service> <service android:enabled="true" android:name="com.radiusnetworks.ibeacon.IBeaconIntentProcessor"> <meta-data android:name="background" android:value="true" /> <intent-filter android:priority="1" > <action android:name="com.framgia.push.DID_RANGING" /> <action android:name="com.framgia.push.DID_MONITORING" /> </intent-filter> </service> <service android:name="ie.imobile.extremepush.GCMIntentService" /> <receiver android:name="ie.imobile.extremepush.receivers.GCMReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <action android:name="ie.imobile.extremepush.BEACON_SERVICE_STARTED" /> <category android:name="com.framgia.push" /> </intent-filter> </receiver> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application>
Để ứng dụng connect được Extremepush chúng ta cần thêm vào class MainActivity.java:
private static final String GOOGLE_PROJECT_NUMBER = "nhập id của project google console của bạn ở đây"; private static final String XTREME_PUSH_APP_KEY = "Nhập key của project, cái mà đã tạo lúc đầu trên trang extremepush.com vào đây";
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // INITIALISE THE XTREMEPUSH CONNECTOR HERE mPushConnector = new PushConnector.Builder(XTREME_PUSH_APP_KEY, GOOGLE_PROJECT_NUMBER) .create(this); mPushConnector.setShowAlertDialog(true); }
Đồng thời thêm các event của extremepush vào tương ứng với các event của activity:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //XtremePush onActivityResult Callback mPushConnector.onActivityResult(requestCode, resultCode, data); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); //XtremePush onNewIntent Callback mPushConnector.onNewIntent(intent); } @Override protected void onStart() { super.onStart(); //XtremePush onStart Callback mPushConnector.onStart(this); } @Override protected void onResume() { super.onResume(); //XtremePush onResume Callback mPushConnector.onResume(this); } @Override protected void onPause() { super.onPause(); //XtremePush onPause Callback mPushConnector.onPause(this); } @Override protected void onStop() { super.onStop(); //XtremePush onStop Callback mPushConnector.onStop(this); } @Override protected void onDestroy() { super.onDestroy(); //XtremePush onDestroy Callback mPushConnector.onDestroy(this); }
Nhập google server key(ở chỗ nút change như trong hình bạn nhé) và android bundle id vào như hình sau:
Vậy là xong. Giờ chạy app lần đầu để nó đăng ký với extremepush. Muốn gửi push notification chỉ cần vào CREATE CAMPAIGN và chọn create a push message. Sau đó nhập thông tin vào form sau đó nhấn review and send push.
Qua lần ngâm cứu tháng này mình biết được thêm một service có thể tự động gửi push hoặc tự gửi push tới device miễn phí, nó thực sự tiện lợi hơn là tự làm server rất nhiều.. Có thời gian sẽ ngâm cứu thêm, mình nghĩ nó cũng có nhiều ứng dụng, ví như bạn có thể tự làm cho mình 1 app kiểu mấy giờ thì gửi push cho 1 nhóm người thân nghỉ ngơi, đi làm, .... Cảm ơn sự giới thiệu và support của anh Nguyễn Viết Mạnh. Bài viết của mình có tham khảo từ trang: https://dashboard.xtremepush.com/docs/libs/android_start/
Dưới đây là link download cả project mà mình đã thực hành và test thành công. Bạn có thể download về tham khảo: https://drive.google.com/file/d/0B7td9WR1ZtQ0TGRiRGhkWFNmSHM/view?usp=sharing và file apk, mình đã cài đặt sẵn là sẽ tự động gửi push notification hàng ngày vào lúc 22h đêm, cài đặt này sẽ hết hạn vào năm 2016