Event Notificationsを使ったiOSモバイルへのプッシュ通知の作成と送信
Event Notifications サービスを作成し、Apple プッシュ通知サービス (APNs) のプッシュ宛先を追加し、iOS デバイスにメッセージを送信します。
Event Notifications とは何ですか?
Event Notificationsは、IBM Cloudアカウントで発生した重要なイベントを通知したり、Webhookを使用して自動化されたアクションをトリガするイベント通知ルーティングサービスです。 You can filter and route event notifications from IBM Cloud services like Availability Monitoring, to email, SMS, push notifications (FCM or APNs), and webhooks.
クライアントは 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デベロッパーポータルにアクセスし、Certificates, Identifiers & Proflesをi選択します。
Certificates, Identifiers & Profiles -
Identifiers > Add identifier button
に移動します。caption-side=bottom" -
新しい「
Identifier
」を追加するボタンをクリックする。*新しい識別子を追加するボタン -
「アプリ ID」オプションを選択します。
IDオプション -
タイプを選択して、
Continue
をクリックします。App ID type -
「App ID Prefix」にストリングを入力します。
Description
フィールドにアプリ名を入力します。 例えば、 Event Notifications iOS アプリケーションです。 -
Bundle ID
」には*「Explicit*」を選択し、バンドルIDの値を指定する。 ドメイン名を逆にしたスタイルのストリングを指定することをお勧めします。 例えば、com.ibm.cloud.en.app
などです。*を作成する新規App ID -
「機能」から
Push Notifications
チェック・ボックスを選択し、Continue
をクリックします。を有効にする*プッシュ通知 -
設定を確認し、
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 & プロファイル」を選択します。
Certificates, Identifiers & Profiles -
Identifiers area
で、アプリ IDを選択します。」タブ -
Push Notifications
チェック・ボックスを選択するか、Edit
オプションを選択します。通知チェックボックス - 「開発 SSL 証明書」ペインで、「証明書の作成 ...」をクリックします。
- 「実動 SSL 証明書」ペインで、「証明書の作成 ...」をクリックします。
caption-side=bottom" -
Mac でキーチェーン・アクセス・アプリケーションを使用して、証明書署名要求 (CSR) を作成します。
-
メニューから「
Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority…
選択する。{: caption="する*
-
「証明書情報 (Certificate Information)」に、アプリ開発者アカウントに関連付けられている E メール・アドレスと共通名を入力します。 開発用の証明書 (サンドボックス) であるか、配布用の証明書 (実動) であるかを識別するのに役立つ分かりやすい名前を付けます。例えば、サンドボックス-apns-証明書 や 実動-apns-証明書などです。
-
Saved to disk
を選択して.certSigningRequest
ファイルを Mac にダウンロードし、Continue
をクリックします。の詳細*証明書の -
Save As
メニュー・オプションで、.certSigningRequest
ファイルに名前を付け、ファイルを保存する場所を選択し、Save
をクリックします。{: caption="を保存するCSR" caption-side="bottom"}を保存するCSRファイルを保存する
-
Done
をクリックします。 これで CSR を使用できるようになりました。作成 -
Appleデベロッパーポータルに戻り、CSRファイルのアップロードオプションで「ファイルを選択」をクリックし、ファイル「
CertificateSigningRequest.certSigningRequest
」を選択します。Continue
をクリックします。{: caption="するCSRファイルをアップロードする
-
Download
をクリックします。aps_development.cer
ファイルがダウンロードされます。{: caption="*証明書のダウンロード
-
新しくインストールした証明書を見つけます。 証明書をダブルクリックして、それを「キーチェーンアクセス」にインストールします。
-
Mac で、
Keychain Access > My Certificates
に移動します。 -
証明書と秘密鍵を選択し、
Export
を選択して、証明書を個人情報交換形式 (.p12
形式) に変換します。caption-side=bottom" -
Save As
フィールドに、分かりやすい名前を証明書に提供します。 例えば、sandbox-apns.p12 または production-apns.p12。Save
をクリックします。書を保存する*証明書を保存する -
Enter a password
フィールドに、エクスポートされた項目を保護するためのパスワードを入力し、OK
をクリックします。 このパスワードは、Event Notifications サービスのコンソールで APNs 設定を構成するために使用できます。書を保護する*証明書を保護する -
キー・アクセス・アプリは、キーチェーン画面からキーをエクスポートするように要求します。 ご使用の Mac の管理パスワードを入力して、システムがこれらの項目をエクスポートできるようにし、「常に許可 (Always Allow)」オプションを選択します。 選択した場所に A .p12 証明書が生成されます。
APNs p8 トークンの作成
-
Appleのデベロッパーポータルにアクセスし、「
Certificates, Identifiers & Profiles
選択する。Certificates, Identifiers & Profiles -
Keys
タブに行く。」タブ -
Key Name
と入力して APNs を有効にし、continue
をクリックします。P8 token details -
Register
をクリックします。書*登録p8トークン -
登録後、新しいリダイレクトページでキーをダウンロードしてください。
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 です。
iOSデスティネーションSDKのEvent Notificationsを使用するには、次のようにサービスのアーティファクト座標(グループ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 buildでプロジェクトをビルドすると、パッケージマネージャが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() }
このコールバック・メソッドは、ユーザーがアクション・ボタンをクリックすると呼び出されます。 このメソッドの実装は、指定された識別子に関連するタスクを実行し、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 を使用できます。

