IBM MobileFirst

IBM MobileFirst Server推播服務

廖汶彬 2018/05/01 15:34:42
1514

IBM MobileFirst Server推播服務


簡介

1.介紹IBM MobileFirst Server提供的推播服務。 2.如何在IBM MobileFirst Operations Console設定推播。 3.以Cordova為例,說明如何在app開發加入推播通知的功能。

作者

廖汶彬


IBM Mobile Foundation提供了一套統一的API方法,可將推送或SMS通知發送到iOS,Android,Windows 8.1 Universal,Windows 10 UWP和Cordova(iOS,Android)應用程序。 推播通知從MobileFirst Server發送到供應商的推播服務,再發送到相關設備。推送通知目前適用於SMS,WNS,iOS和Android。 iOS使用Apple Push Notification Service(APN)發送推播,Android使用Google Cloud Messaging(GCM)發送推播,Windows使用Windows推送通知服務(WNS)發送推播。

支援裝置

  • iOS 8.x or later
  • Android 4.x or later
  • Windows 8.1, Windows 10

推播通知形式

  • Alert (iOS, Android, Windows) - 彈出式的文字訊息
  • Sound (iOS, Android, Windows) - 當收到推播通知時播放的音效
  • Badge (iOS), Tile (Windows) - 應用程式的icon上顯示的未讀筆數
  • Banner (iOS), Toast (Windows) - 在裝置上方出現一段時間再自動消失的文字訊息
  • Interactive (iOS 8 and above) - 可以互動通知訊息,會有按鈕可以操作
  • Silent (iOS 8 and above) - 靜音模式

推播通知類型

  • Tag notifications
    針對所有訂閱特定標籤的設備的通知消息。可以根據主題區域或主題分割通知。 通知收件人只有在涉及感興趣的主題或主題時才可以選擇接收通知。
  • Broadcast notifications
    廣播通知是標籤推送通知的一種形式,針對所有訂閱的設備,並通過預訂Push.all標籤(為每個設備自動創建)。
  • Unicast notifications
    針對特定設備或用戶ID的通知消息。
  • Interactive notifications
    收到通知時,用戶可以在不打開應用程序的情況下執行操作。iOS版本8以後的設備支援此類型的推播,如果是低於8的iOS設備,則不會顯示通知操作。
  • Silent notifications
    不會顯示提示或以其他方式干擾用戶的通知。支援版本7以上的iOS設備。

如何在MobileFirst Operations Console設定推播通知的服務?

利用mfpdev-cli將App註冊至MobileFirst Operations Console,註冊完成後可在MobileFirst Operations Console左側的選單看到註冊好的App。
展開App選單後會有"推送"的功能選項。進入該功能即可進行推播服務的設定。
進入"推送"功能後,系統會要求你進行APNS或是FCM的憑証/金鑰的設定才可以使用推送服務。
切換頁籤至"推送設定"進行APNS與FCM的設定。
APNS需選擇Production環境或是Development環境的推播並上傳對應的p12憑証
FCM需設定金鑰與傳送端ID
設定完成後即可開始始用推播的功能
可利用MobileFirst Operations Console介面的傳送通知功能或是API進行推播(當然app端也必需實作推播相關的程式碼)

如何在Cordova App專案中加入推播相關的程式?

安裝push plugin
在終端機或命令提示字元視窗下將目錄移至Cordova專案目錄下
使用以下指令安裝push plugin
cordova plugin add cordova-plugin-mfp-push
開啟iOS與Android平台推播的功能設定
iOS設定 Android設定
<activity android:name="com.ibm.mobilefirstplatform.clientsdk.android.push.api.MFPPushNotificationHandler" android:theme="@android:style/Theme.NoDisplay"/>
cordova-plugin-mfp-push提供的API
Javascript Function Description
MFPPush.initialize(success, failure) 初始化MFPPush實體
MFPPush.isPushSupported(success, failure) 判斷裝置是否支援推播功能
MFPPush.registerDevice(options, success, failure) 註冊裝置
MFPPush.getTags(success, failure) 取得目前所有可用Tag
MFPPush.subscribe(tag, success, failure) 訂閱特定Tag
MFPPush.getSubsciptions(success, failure) 取得目前裝置訂閱的Tag
MFPPush.unsubscribe(tag, success, failure) 解除訂閱特定Tag
MFPPush.unregisterDevice(success, failure) 取消註冊設備
API實作範例 - Initialization
var notificationReceived = function(message) {
    alert(JSON.stringify(message));
};
MFPPush.initialize (
    function(successResponse) {
        alert("Successfully intialized");
        MFPPush.registerNotificationsCallback(notificationReceived);
    },
    function(failureResponse) {
        alert("Failed to initialize");
    }
);
API實作範例 - Is push supported
MFPPush.isPushSupported (
    function(successResponse) {
        alert("Push Supported: " + successResponse);
    },
    function(failureResponse) {
        alert("Failed to get push support status");
    }
);
API實作範例 - Register device
var options = { };
MFPPush.registerDevice(
    options,
    function(successResponse) {
        alert("Successfully registered");
    },
    function(failureResponse) {
        alert("Failed to register");
    }
);
API實作範例 - Get tags
MFPPush.getTags (
    function(tags) {
        alert(JSON.stringify(tags));
},
    function() {
        alert("Failed to get tags");
    }
);
API實作範例 - Subscribe
var tags = ['sample-tag1','sample-tag2'];
MFPPush.subscribe(
    tags,
    function(tags) {
        alert("Subscribed successfully");
    },
    function() {
        alert("Failed to subscribe");
    }
);
API實作範例 - Get subscriptions
MFPPush.getSubscriptions (
    function(subscriptions) {
        alert(JSON.stringify(subscriptions));
    },
    function() {
        alert("Failed to get subscriptions");
    }
);
API實作範例 - Unsubscribe
var tags = ['sample-tag1','sample-tag2'];
MFPPush.unsubscribe(
    tags,
    function(tags) {
        alert("Unsubscribed successfully");
    },
    function() {
        alert("Failed to unsubscribe");
    }
);
API實作範例 - Unregister
MFPPush.unregisterDevice(
    function(successResponse) {
        alert("Unregistered successfully");
    },
    function() {
        alert("Failed to unregister");
    }
);
附註:除了在Cordova專案可以使用MobileFirst的推播功能以外,在原生的iOS、Android甚至Xamarin也都可以使用。
廖汶彬