Event Notifications を使用してプッシュ通知を作成し、 iOS モバイルに送信します。
Event Notifications サービスを作成し、Apple プッシュ通知サービス (APNs) のプッシュ宛先を追加し、iOS デバイスにメッセージを送信します。
Event Notifications とは何ですか?
Event Notifications は、 IBM Cloud アカウントで発生したクリティカル・イベントを通知するか、Webhook を使用して自動化アクションをトリガーするイベント通知ルーティング・サービスです。 Availability Monitoringなどの IBM Cloud サービスからのイベント通知をフィルタリングして、E メール、SMS、プッシュ通知 (FCM または APNs)、および Webhook にルーティングすることができます。
クライアントは iOS プッシュ通知をどのように使用しますか。
次の図は、クライアントが iOS プッシュ通知を使用する方法を示しています。
目標
このチュートリアルでは、以下のようにプッシュ通知を送信する方法について説明します。
- Event Notifications を使用してモバイル・アプリケーションを作成します。
- APNs 資格情報を取得します。
- コードをダウンロードし、通知のセットアップを完了します。
- iOS プッシュ通知を構成してモバイル・デバイスに送信します。
開始前に
以下の前提条件を満たしている必要があります。
- IBM Cloud アカウント。 持っていない場合は、 IBM Cloud アカウントを作成します。
- Event Notifications インスタンス。
- SDK がアカウントにアクセスできるようにするための IAM API キー。 ここを 1 つ作成します。
- Xcode 9.3 以上
- Swift 4.2+
- iOS 10.0+
Event Notifications サービス・インスタンスの作成
- IBM Cloud アカウントにログインします。
- IBM Cloud カタログ で、
Event Notifications > Event Notifications
を検索します。 - サポートされるリージョンのリストから
Region
を選択し、pricing plan
を選択します。 Service name
を提供します。resource group
を選択します。- チェック・ボックスをクリックして、ご使用条件と条件に同意します。
Create
をクリックします。
APNs 資格情報の取得
iOS デバイスおよび iOS アプリケーションの場合、Apple Push Notification Service (APNs) を使用すると、アプリケーション開発者は、Event Notifications (プロバイダー) 上の IBM Cloud サービス・インスタンスから iOS デバイスおよび iOS アプリケーションにリモート通知を送信できます。 メッセージは、デバイス上のターゲット・アプリケーションに送信されます。
APNs 資格情報を取得して構成する必要があります。 APNs の証明書は、Event Notificationsサービスによって安全に管理され、プロバイダーとしての APNs サーバーへの接続に使用されます。
アプリ ID の登録
アプリ ID (バンドル ID) は、特定のアプリケーションを識別する固有の ID です。 各アプリケーションにアプリ ID が必要です。 プッシュ通知サービスなどのサービスは、App ID に対して構成されます。
-
Apple 開発者ポータル に移動し、 「証明書、ID」&「プロファイル」 を選択します。
図 2. 証明書、ID & プロファイル -
Identifiers > Add identifier button
に移動します。図 3. 「ID」ボタン -
「新規
Identifier
の追加」ボタンをクリックします。図 4. 「新規 ID の追加」ボタン -
「アプリ ID」オプションを選択します。
図 5. 「アプリ ID」オプション -
タイプを選択して、
Continue
をクリックします。図 6. App ID タイプ -
「App ID Prefix」にストリングを入力します。
Description
フィールドにアプリ名を指定します。 例えば、 Event Notifications iOS アプリケーションです。 -
Bundle ID
の場合は、 「明示的」 を選択し、バンドル ID 値を指定します。 ドメイン名を逆にしたスタイルのストリングを指定することをお勧めします。 例えば、com.ibm.cloud.en.app
などです。図 7. 新規 App ID 詳細 -
「機能」から
Push Notifications
チェック・ボックスを選択し、Continue
をクリックします。図 8. プッシュ通知を有効にする -
設定を確認し、
Register > Done
をクリックします。
これで、アプリケーション ID が登録されました。

開発および配布用 APNs SSL 証明書の作成
APNs 証明書を取得する前に、最初に証明書署名要求 (CSR) を生成し、それを Apple の認証局 (CA) にサブミットしておく必要があります。 CSR には、ユーザーの会社を識別する情報および Apple プッシュ通知に署名するために使用する公開鍵と秘密鍵が含まれます。 次に、iOS 開発者ポータル (iOS Developer Portal) で SSL 証明書を生成します。 証明書は、公開鍵および秘密鍵と共に「キーチェーンアクセス」に保管されます。
APNs は、以下の 2 つのモードで使用できます。
- サンドボックス・モード。開発およびテスト用です。
- 実動モード。App Store (またはその他のエンタープライズ配布メカニズム) を介してアプリケーションを配布するときのモードです。
開発環境と配布環境では別々の証明書を取得する必要があります。 証明書は、リモート通知の受信者であるアプリのアプリ ID に関連付けられます。 実動の場合は、最大 2 つの証明書を作成できます。 IBM Cloud は、証明書を使用して APNs との SSL 接続を確立します。
APNs p12 証明書の作成
-
Apple 開発者ポータルに移動し、「証明書、ID & プロファイル」を選択します。
図 10. 証明書、ID & プロファイル -
Identifiers area
で、アプリ IDを選択します。図 11. ID タブ -
Push Notifications
チェック・ボックスを選択するか、Edit
オプションを選択します。図 12. 「プッシュ通知」チェック・ボックス - 「開発 SSL 証明書」ペインで、「証明書の作成 ...」をクリックします。
- 「実動 SSL 証明書」ペインで、「証明書の作成 ...」をクリックします。
図 13. 証明書のタイプ -
Mac でキーチェーン・アクセス・アプリケーションを使用して、証明書署名要求 (CSR) を作成します。
-
メニューから「
Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority…
」を選択します。図 14. 新規証明書タイプ -
「証明書情報 (Certificate Information)」に、アプリ開発者アカウントに関連付けられている E メール・アドレスと共通名を入力します。 開発用の証明書 (サンドボックス) であるか、配布用の証明書 (実動) であるかを識別するのに役立つ分かりやすい名前を付けます。例えば、サンドボックス-apns-証明書 や 実動-apns-証明書などです。
-
Saved to disk
を選択して.certSigningRequest
ファイルを Mac にダウンロードし、Continue
をクリックします。図 15. 証明書の詳細 -
Save As
メニュー・オプションで、.certSigningRequest
ファイルに名前を付け、ファイルを保存する場所を選択し、Save
をクリックします。図 16. CSR ファイルの保存 -
Done
をクリックします。 これで CSR を使用できるようになりました。図 17. CSR の作成 -
Apple 開発者ポータルに戻り、「CSR ファイルのアップロード (Upload CSR file)」オプションで「ファイルの選択 (Choose File)」をクリックし、ファイル
CertificateSigningRequest.certSigningRequest
を選択します。Continue
をクリックします。図 18. CSR ファイルのアップロード -
Download
をクリックします。aps_development.cer
ファイルがダウンロードされます。図 19. 証明書のダウンロード -
新しくインストールした証明書を見つけます。 証明書をダブルクリックして、それを「キーチェーンアクセス」にインストールします。
-
Mac で、
Keychain Access > My Certificates
に移動します。 -
証明書と秘密鍵を選択し、
Export
を選択して、証明書を個人情報交換形式 (.p12
形式) に変換します。の図 20。 証明書のエクスポート -
Save As
フィールドに、分かりやすい名前を証明書に提供します。 例えば、sandbox-apns.p12 または production-apns.p12。Save
をクリックします。図 21. 証明書の保存 -
Enter a password
フィールドに、エクスポートされた項目を保護するためのパスワードを入力し、OK
をクリックします。 このパスワードは、Event Notifications サービスのコンソールで APNs 設定を構成するために使用できます。図 22. 証明書の保護 -
キー・アクセス・アプリは、キーチェーン画面からキーをエクスポートするように要求します。 ご使用の Mac の管理パスワードを入力して、システムがこれらの項目をエクスポートできるようにし、「常に許可 (Always Allow)」オプションを選択します。 選択した場所に A .p12 証明書が生成されます。
APNs p8 トークンの作成
-
Apple 開発者ポータル に移動し、
Certificates, Identifiers & Profiles
を選択します。図 23. 証明書、ID & プロファイル -
Keys
タブに移動します。図 24. 「キー」タブ -
Key Name
と入力して APNs を有効にし、continue
をクリックします。図 25. P8 トークンの詳細 -
Register
をクリックします。図 26. p8 トークン -
1 回限りのアクティビティーであるため、登録後に必ず新しいリダイレクト・ページでキーをダウンロードしてください。
KeyID
はファイルの一部として表示され、UI に表示されます。この KeyID
は、APNS 証明書の登録に使用されます。 TeamID
は、開発者アカウント用に Apple によって提供され、チーム名の横に表示されます。 TeamID
は、APNS 証明書の登録に使用されます。 BundleID
は、 P12 証明書と同じように登録できます。
汎用 API ソースの追加
次のステップを実行します。
- Event Notifications ダッシュボードの
Sources
セクションに移動します。 Add
をクリックし、API ソースを選択します。- 名前とオプションの説明を入力し、
Add
をクリックします。
Event Notifications 宛先の作成
Event Notifications コンソールでDestinations
をクリックし、以下の宛先詳細を追加します。
Name
: 宛先の名前を追加します。Description
: 宛先の説明 (オプション) を追加します。Type
: ドロップダウン・リストからiOS Push Notifications
タイプを選択します。- 宛先計画 (実動前宛先または実動宛先) を選択します。
Pre-production destination
-開発環境およびテスト環境用の低コストのプッシュ宛先としてこの宛先を選択します。Production destination
-この宛先の全機能を使用します。 無制限のデバイスおよびアウトバウンド・メッセージが許可されます。
Authentication Type
に基づく詳細を使用して iOS プッシュ資格情報を更新し、Environment
を選択します。- 証明書タイプが
p8
の場合は、 .p8 ファイルをアップロードし、KeyID
、TeamID
、およびBundleID
を指定します。 - 証明書タイプが
p12
の場合は、 p12 証明書をアップロードし、証明書password
を指定します。
- 証明書タイプが
Add
をクリックします。
Event Notifications トピックの作成
Event Notifications コンソールでTopics
を選択し、Create
をクリックします。 以下のトピックの詳細を入力します。
Name
: トピックの名前を入力します。Description
: トピックのオプションの説明を追加します。Source
: ドロップダウン・リストからソースを選択します。Event type
: ドロップダウン・リストからイベント・タイプを選択します。Event sub type
イベント・サブタイプ・ドロップダウン・リストからイベント・サブタイプを選択します。Severity
: 重大度ドロップダウン・リストから重大度を選択します。Advanced conditions
: 独自のカスタム条件を作成します。jsonpath の指定に従う必要があります。
Event Notifications サブスクリプションの作成
Event Notifications コンソールでSubscriptions
をクリックします。 以下のサブスクリプションの詳細を入力します。
Click
をクリックして、サブスクリプション・ウィザードを表示します。- 以下のサブスクリプションの詳細を入力します。
Subscription name
: サブスクリプションの名前。Subscription description
: オプションの説明を追加します。
Subscribe to a topic
セクションの下で、ドロップダウン・リストからトピックを選択し、宛先ドロップダウン・リストから宛先を選択します。Destination type
:Destination
の下でタイプを選択し、Add
をクリックします。
Event Notifications iOS SDK のセットアップ
iOS SDK により、iOS アプリはプッシュ通知を受け取ることができます。 以下のステップを実行して、Event Notifications iOS SDK をインストールし、SDK を初期化し、iOS アプリの通知を登録します。
インストール
この SDK の現行バージョンは 0.0.1 です。
Event Notifications iOS 宛先 SDK を使用するには、以下のように、サービスの成果物座標 (グループ ID、成果物 ID、およびバージョン) を含む依存関係を定義します。
CocoaPods
use_frameworks!
target 'MyApp' do
pod 'ENPushDestination', '~> 0.0.1'
end
Carthage
Carthage を使用してENPushDestination
をインストールするには、以下を Cartfile に追加します。
github "IBM/event-notifications-destination-ios-sdk" ~> 0.0.1
次に、以下のコマンドを実行して、依存関係とフレームワークをビルドします。
carthage update --platform iOS
Swift パッケージ・マネージャー
以下をPackage.swift
ファイルに追加して、ENPushDestination を依存関係として識別します。 Swift ビルドを使用してプロジェクトをビルドすると、パッケージ・マネージャーは ENPushDestination を複製します。
dependencies: [
.package(url: "https://github.com/IBM/event-notifications-destination-ios-sdk", from: "0.0.1")
]
インストール-SDK の初期化
iOS アプリケーションが通知を受信できるようにするには、以下のステップを実行します。
-
.swift
ファイルにimport
ステートメントを追加します。import ENPushDestination
-
ENPushDestination SDK の初期化
let instanceGUID = "<instance_guid>>"; let destinationID = "<instance_destination_id>"; let apiKey = "<instance_apikey>"; let enPush = ENPush.sharedInstance enPush.setCloudRegion(region: .usSouth) enPush.initialize(instanceGUID, destinationID, apiKey)
region
: Event Notifications インスタンスのリージョン。 例えば、Region.usSouth
です。
通知の登録
ENPush.registerDevice()
API を使用して、デバイスを Event Notifications サービスの iOS 宛先に登録します。
次のオプションがサポートされています。
-
ユーザー ID なしで登録します。
/**Register iOS devices*/ enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>") { response, statusCode, error in print(response?.id ?? "") }
-
ユーザー ID を使用して登録します。
userId
ベースの通知の場合、register メソッドはもう 1 つパラメーターuserId
を受け入れます。/**Register iOS devices*/ enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>", withUserId: "userId") { response, statusCode, error in print(response?.id ?? "") }
userId
は、 Event Notificationsの登録に固有のuserId
値を渡すために使用されます。
通知からの登録抹消
以下のコード・スニペットを使用して、 Event Notificationsから登録抹消します。
enPush.unregisterDevice { response, statusCode, error in
/**.....*/
}
UserId
ベースの登録から登録抹消するには、登録メソッドを呼び出す必要があります。 通知の登録 の Register without userId option
を参照してください。
Event Notifications 宛先タグのサブスクリプション
iOS デバイスでのプッシュ通知の受け取り
iOS デバイスでプッシュ通知を受け取るには、以下の Swift メソッドをアプリケーションの appDelegate.swift
に追加します。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
//UserInfo dictionary will contain data sent from the server
}
通知オプション
以下の通知オプションがサポートされています。
対話式通知
- 対話式プッシュ通知を有効にするには、通知アクション・パラメーターを通知オブジェクトの一部として渡す必要があります。 以下は、対話式通知を有効にするサンプル・コードです。
let actionOne = ENPushNotificationAction(identifierName: "FIRST", buttonTitle: "Accept", isAuthenticationRequired: false, defineActivationMode: .foreground)
let actionTwo = ENPushNotificationAction(identifierName: "SECOND", buttonTitle: "Reject", isAuthenticationRequired: false, defineActivationMode: .destructive)
let category = ENPushNotificationActionCategory(identifierName: "category", buttonActions: [actionOne, actionTwo])
let notificationOptions = ENPushClientOptions()
notificationOptions.setInteractiveNotificationCategories(categoryName: [category])
enPush.initialize(instanceGUID, destinationID, apiKey, notificationOptions)
-
AppDelegate.swift にコールバック・メソッドを実装します。
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { switch response.actionIdentifier { case "Accept": print("Clicked Accept") case "Reject": print("Clicked Reject") default: } completionHandler() }
このコールバック・メソッドは、ユーザーがアクション・ボタンをクリックすると呼び出されます。 このメソッドの実装では、指定された ID に関連付けられたタスクを実行し、 completionHandler パラメーターでブロックを実行する必要があります。
登録のためのカスタム・デバイス ID の追加
DeviceId
を送信するには、ENPushClientOptions
クラスのsetDeviceId
メソッドを使用します。
let options = ENPushClientOptions();
options.setDeviceId(deviceId: "YOUR_DEVICE_ID");
デバイスごとにカスタム DeviceId unique
を保持することを忘れないでください。
リッチ・メディア通知の使用可能化
リッチ・メディア通知は iOS 10 以降でサポートされます。 リッチ・メディア通知を受信するには、UNNotificationServiceExtension を実装します。 この拡張機能は、リッチ・メディア通知をインターセプトして処理します。
サービス拡張の didReceive() メソッドで、以下のコードを追加して、リッチ・プッシュ通知コンテンツを取得します。
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
ENPushRichPushNotificationOptions.didReceive(request, withContentHandler: contentHandler)
}
iOS デバイスへの通知の送信
通知送信 API を使用して、iOS デバイスのプッシュ通知を送信します。 API を直接呼び出す代わりに、ノードまたは実行管理 SDK を使用できます。

