iOS向けどこでもサポートSDKのプッシュ通知の設定
どこでもサポートSDK(ソフトウェア開発キット)では、担当者によるチャットの返信時に利用者に対してどこでもサポートのウィジェットで通知を送信するように設定できます。通知を設定するには、.p12形式のAPNs(Apple Push Notification service:Apple プッシュ通知サービス)証明書が必要です。
APNs証明書の.p12ファイルを作成するには、以下の手順を実施します。
1. Apple Developer(Appleの開発者向けポータル)でAPNs証明書を作成し、ダウンロードします。
2. 証明書をダブルクリックします。ダブルクリックすると、証明書がキーチェーンアクセスのアプリ内に自動でインポートされます。
3. キーチェーンアクセスのアプリを起動し、証明書を開きます。証明書に対応するキーが表示されます。
4. 証明書とキーの両方を選択して、右クリックします。メニューが表示されます。
5. エクスポートのためのメニューをクリックします。保存先に関する設定画面が表示されます。
6. ファイル形式のドロップダウンで[.p12]が選択されていることを確認し、[保存]をクリックします。
7. ファイルにアクセスするためのパスワードを入力し、[OK]をクリックします。証明書が.p12ファイルとしてエクスポートされます。
次に、Zoho Deskのどこでもサポートの設定画面でプッシュ通知を有効にします。有効にするには、どこでもサポートのウィジェットの設定ページに移動し、作成した.p12ファイルをアップロードしてパスワードを入力します。
次に、「AppDelegate」クラス内の「application: the didRegisterForRemoteNotificationsWithDeviceToken」メソッドで「enablePushNotification」APIを実行できるように、ウィジェットを設定します。
Swift
- func application
(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
let token = deviceToken.reduce
("", {$0 + String(format: "%02X", $1)}).uppercased()
ZohoDeskPortalSDK.enablePushNotification
(deviceToken:token, mode: .production)
}
Objective-C
- - (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString * token = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
[ZohoDeskPortalSDK enablePushNotificationWithDeviceToken:<#(NSString * _Nonnull)#> isTestDevice:<#(BOOL)#> mode:<#(enum APNSmode)#>];
}

開発モードに切り替えると、通知が正しく送信されるかどうかを検証することができます。開発モードに切り替えるには、上記のコードの「.production」を「.sandbox」に変更します。開発モードに切り替えた場合は、アプリの公開前に、必ず本番環境モードに戻してください。
次に、プッシュ通知が受信された際に「AppDelegate」クラスの「didReceiveRemoteNotification」メソッドが自動で呼び出されるように、どこでもサポートSDK(ソフトウェア開発キット)を設定する必要があります。また、その後、どこでもサポートSDK(ソフトウェア開発キット)で受信された通知が適切に処理されるようにするため、「processRemoteNotification」メソッドの呼び出しが必要です。このメソッドを呼び出すには、以下のメソッドを追加します。
Swift
- import ZohoDeskPortalConfiguration
...
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any])
{
ZDPortalConfiguration.processRemoteNotification(userInfo: userInfo)
}
Objective-C
- @import ZohoDeskPortalConfiguration;
...
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)
(UIBackgroundFetchResult))completionHandler
{
[ZDPortalConfiguration processRemoteNotificationWithUserInfo:userInfo];
}