IBM
MobileFirst
IBM MobileFirst Server推播服務
2018/05/01 15:34:42
0
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選單後會有"推送"的功能選項。進入該功能即可進行推播服務的設定。
展開App選單後會有"推送"的功能選項。進入該功能即可進行推播服務的設定。

進入"推送"功能後,系統會要求你進行APNS或是FCM的憑証/金鑰的設定才可以使用推送服務。

切換頁籤至"推送設定"進行APNS與FCM的設定。
APNS需選擇Production環境或是Development環境的推播並上傳對應的p12憑証
FCM需設定金鑰與傳送端ID
設定完成後即可開始始用推播的功能
可利用MobileFirst Operations Console介面的傳送通知功能或是API進行推播(當然app端也必需實作推播相關的程式碼)
APNS需選擇Production環境或是Development環境的推播並上傳對應的p12憑証
FCM需設定金鑰與傳送端ID
設定完成後即可開始始用推播的功能
可利用MobileFirst Operations Console介面的傳送通知功能或是API進行推播(當然app端也必需實作推播相關的程式碼)

如何在Cordova App專案中加入推播相關的程式?
安裝push plugin
在終端機或命令提示字元視窗下將目錄移至Cordova專案目錄下
使用以下指令安裝push plugin
iOS設定
Android設定
在終端機或命令提示字元視窗下將目錄移至Cordova專案目錄下
使用以下指令安裝push plugin
cordova plugin add cordova-plugin-mfp-push開啟iOS與Android平台推播的功能設定
iOS設定

<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也都可以使用。