目次
概要
WOVN.app 2.10.0 以降のバージョンをご利用の場合、プッシュ通知を翻訳できます。
利用したい場合は WOVN 側で設定が必要となるため、担当者、もしくはテクニカルサポートにお問い合わせください。
インフォメーション
利用状況によっては、契約の変更が発生する場合があります。
プッシュ通知を行うためのコードのセットアップをする
対象の SDK をご利用のお客様で WOVN 側の設定が完了している場合、以下の設定によりプッシュ通知の翻訳が行えます。
- FirebaseMessagingService を拡張してカスタム ロジックを追加していない場合は、このドキュメントに従って拡張してください。
- FirebaseMessagingService 拡張クラス内に通知を表示する前に Wovn.translateFirebaseNotificationIntent() を呼び出してください。
注意
WOVN およびその他の必要な依存関係をインポートすることを忘れないでください。package io.wovn.app.demo.activities;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import io.wovn.app.demo.R;
import io.wovn.wovnapp.Wovn;
public class WovnFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
// This function will not be called since we overridden handleIntent
}
@Override
public void handleIntent(Intent intentSrc) {
Intent intentDst = Wovn.translateFirebaseNotificationIntent(intentSrc);
showNotification(intentDst.getStringExtra("gcm.notification.title"), intentDst.getStringExtra("gcm.notification.body"));
}
public void showNotification(String title, String message) {
Context context = getApplicationContext();
showNotification(context, title, message);
}
public static void showNotification(Context context, String title, String message) {
final String CHANNEL_ID = "MyChannelId";
final int NOTIFICATION_ID = 1;
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Create a notification channel for Android Oreo and above
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "Channel Name", NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
// Create the notification
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.arrow_point_to_right)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true);
// Show the notification
notificationManager.notify(NOTIFICATION_ID, builder.build());
}
@Override
public void onDeletedMessages() {
// Your logic here
}
@Override
public void onNewToken(@NonNull String token) {
// Your logic here
}
} - CHANNEL_ID と通知アイコンを希望の値に置き換えたら、プッシュ通知を翻訳する準備が整います。
プッシュ通知の翻訳とテストをする
プッシュ通知を行うためのコードのセットアップが完了したら、プッシュ通知の翻訳を行います。
- 次のデータを使用して、Firebase Cloud Messaging 経由でデバイスにプッシュ通知を送信します。
{
"to": "{YOUR TESTING DEVICE FCM TOKEN}",
"notification": {
"mutable_content": true, // iOSにも送信する場合は、この行を忘れないでください
"title": "こんにちは",
"body": "素晴らしい日ですね!"
}
} - WOVN ダッシュボードの PushNotification 画面内に通知のタイトルと本文が登録されていることを確認します。
注意
初回時、テストデバイスは日本語で通知を受信します。 これは、WOVN にまだ翻訳された対訳が存在しないためです。 1 度プッシュ通知を行うと、WOVN にデータがレポートされます。 - タイトルと本文を翻訳し、[保存して公開] をクリックします。これにより、次回同じ通知を送信すると、通知はエンドユーザーの言語に翻訳されます。
ユーザーごとの動的情報を含むプッシュ通知を翻訳する
- 動的情報を通知のタイトルまたは本文に直接追加する代わりに、%{variable_name}% を使用して通知のデータ内に変数データを含めることができます。
{
"to": "{YOUR TESTING DEVICE FCM TOKEN}",
"notification": {
"mutable_content": true, // iOSにも送信する場合は、この行を忘れないでください
"title": "今月の請求書の準備ができました, %name%さん!",
"body": "今月は%amount%円です。 %date%までにお支払いください"
},
"data": {
"name": "John Doe",
"amount": "10000",
"date": "2023/12/12"
}
} - 指示に従ってプッシュ通知をテストします。 ユーザーデータを含むプッシュ通知は、ユーザーデータを WOVN ダッシュボードに報告せずに翻訳されます。
これにより、動的情報を含むプッシュ通知を送信しても、動的情報はそのまま表示され、翻訳対象のみが翻訳されます。
ローカルプッシュ通知を翻訳する
- Wovn.translateNotificationData() を使用すると、ローカル プッシュ通知データを表示する前に翻訳できます。
Map<String, Object> data = new HashMap<>();
data.put("amount", 2468);
data.put("duration", 31);
String title = Wovn.translateNotificationData("お客様へ");
String body = Wovn.translateNotificationData("%amount%円を%duration%日以内にお支払いください", data);
// Display local push notification code