- 印刷する
- PDF
プッシュ
- 印刷する
- PDF
最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
Classic/VPC環境で利用できます。
開発者がサーバまたはクラウドからモバイルデバイスに信頼できて効率的な方法でメッセージを送信できるようにします。プッシュを使用すると、通知メッセージ(システムがユーザーに表示できるメッセージ)とデータメッセージ(アプリが処理するキーと値のペアデータ)をモバイルアプリやウェブアプリに送信できます。プッシュは、iOS、Android、ウェブアプリケーションなど、さまざまなプラットフォームをサポートします。
主な機能
- さまざまなメッセージ送信: 通知メッセージやデータメッセージを含むさまざまなタイプのメッセージを送信できます。
- 大規模メッセージング: 数百万人のユーザーに同時にメッセージを送信できるため、大規模アプリケーションの効率的なメッセージ送信が可能です。
- さまざまなプラットフォームに対応: iOS、Android、ウェブアプリケーションなどさまざまなプラットフォームからメッセージを受信できます。
- 高度なメッセージングオプション: メッセージの優先順位設定、寿命(lifetime)設定、トピックベースのサブスクリプション、条件付きメッセージ送信などの高度な機能を提供します。
ダッシュボードの設定
FCMプッシュキーの作成方法
Firebase Console > プロジェクトの設定 > クラウドメッセージング > サービスアカウント管理をクリックします。
Google Cloud > サービスアカウント > 作成済みのメールアカウントを選択します。
キー > キーの追加 > 新しいキーを作成 > キーのタイプは「JSON」にして [作成] ボタンをクリックします。
- 作成済みのキーがあれば、そのファイルを使用しても構いません。
- 作成済みのキーがあれば、そのファイルを使用しても構いません。
APNS認証キーの作成方法
Apple Developerサイトにログイン > Certificates, IDs & Profiles > キーを選択 > [+] ボタンをクリックしてキーを新規作成します。
- プッシュの認証キーは2個まで作成できます。
- プッシュの認証キーは2個まで作成できます。
Key Nameを入力し、Apple Push notifications service(APNs)を有効化します。
[Register] ボタンをクリックして認証キーを発行します。
Key IDを確認してダウンロードします。
- ダウンロードされたファイルの拡張子は.p8です。
- Keyファイルは一度だけダウンロードできます。
ダッシュボードキーの設定方法
プロジェクトの設定 - 連携 - Google Android (FCM) Configuration
- SenderID: Firebaseコンソール > プロジェクトの設定 > クラウドメッセージング > 送信者 ID
- Private Key (json file): FCMプッシュキーの作成方法で作成した JSONファイルをメモ帳やテキストエディタのようなプログラムで開き、全体内容をコピーして登録します。
プロジェクトの設定 - 連携 - Apple iOS (APNs) Configuration
- Certificate: APNS認証キーの作成方法で作成した.p8ファイルをメモ帳やテキストエディタのようなプログラムで開き、全体内容をコピーして登録します。
- Key ID: APNS認証キーの作成方法で作成した.p8ファイルの Key IDを登録します。
- Team ID: Apple Developerサイト「メンバーシップの詳細情報」のチーム IDを入力します。
- Bundle ID: アプリパッケージの Bundle Identifierを入力します。
プッシュの設定方法 - モバイル
Firebaseプロジェクトの設定
- Firebaseコンソール(console.firebase.google.com)でプロジェクトを作成します。
- 作成されたプロジェクトにアプリケーション(Androidまたは iOS)を追加します。
- アプリケーションに必要な Firebase設定ファイル(
google-services.json
またはGoogleService-Info.plist
)をダウンロードし、GAMEPOTダッシュボードの設定に追加します。
FCM SDKに追加
- Androidの場合、(Module : app)と(Module : project)のそれぞれの build.gradle.ktファイルに定義を追加します。
// (Module : app)の build.gradle.kts
plugins {
...
id("com.google.gms.google-services")
}
dependencies {
...
implementation("com.google.firebase:firebase-messaging-ktx:23.2.1")
}
// (Module : project)の build.gradle.kts
plugins {
...
id("com.google.gms.google-services") version "4.3.15" apply false
}
- iOSの場合、CocoaPodsを使って
Firebase/Messaging
podをインストールします。
プッシュ通知用権限のリクエスト(iOS)
- iOSアプリの場合、ユーザーからプッシュ通知を受け取る権限をリクエストする必要があります。
UNUserNotificationCenter
を使ってリクエストできます。
- iOSアプリの場合、ユーザーからプッシュ通知を受け取る権限をリクエストする必要があります。
デバイストークンの登録とメッセージの受信
- アプリがインストールされて実行されると、FCM SDKはアプリインスタンスに対する固有のトークンを作成します。このトークンをサーバに登録すると特定のデバイスにメッセージを送信できます。
- メッセージ受信のためにアプリケーションにリスナーを実装します。
FCMを使用すると、アプリケーションへのユーザーエンゲージメントを高め、重要な情報を迅速に配信し、さまざまなメッセージ送信シナリオをサポートするカスタマイズされた通知システムを構築できます。FCMは、開発者がクラウドメッセージングを簡単に統合・管理できるように、さまざまなツールと APIを提供します。
iOS用コードの追加
AppDelegateに以下のコードを追加します。
import NBase
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// プッシュ使用パーミッションの許可をリクエスト
registerForRemoteNotifications()
return true
}
func registerForRemoteNotifications() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
if granted {
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
} else {
print("The push notification permission has been denied")
}
}
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
// トークンをサーバに送信して保存したり、使用したりします。
NBase.setPushToken(token: token)
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
// プッシュ通知を登録できません。エラー: \(error.localizedDescription)
NBase.setPushToken(token: "")
}
Objective-Cプロジェクトの場合、AppDelegateに以下のコードを追加します。
#import "[ProjectName]-Swift.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge)
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
} else {
NSLog(@"Push permission denied");
}
}];
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *token = [self stringWithDeviceToken:deviceToken];
[NBaseBridge.shared setPushToken:token];
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"Failed to register for remote notifications: %@", error);
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
completionHandler(UNNotificationPresentationOptionBanner |
UNNotificationPresentationOptionSound |
UNNotificationPresentationOptionBadge);
}
- (NSString *)stringWithDeviceToken:(NSData *)deviceToken {
NSUInteger length = deviceToken.length;
if (length == 0) {
return nil;
}
const unsigned char *buffer = deviceToken.bytes;
NSMutableString *hexString = [NSMutableString stringWithCapacity:(length * 2)];
for (int i = 0; i < length; ++i) {
[hexString appendFormat:@"%02x", buffer[i]];
}
return [hexString copy];
}
Unityプロジェクトに設定ファイルを追加
Firebase Console設定ワークフローからプラットフォーム別 Firebase設定ファイルを取得します。
- iOSの場合、GoogleService-Info.plistのダウンロードをクリックします。
- Androidの場合、google-services.jsonのダウンロードをクリックします。
Unityプロジェクトのプロジェクト画面を開き、設定ファイルを Assetsフォルダに移動します。
プッシュ状態の変更
プッシュを受信するかどうか設定を変更するには、以下のコードを呼び出します。
C#:
NBaseSDK.NBase.setPushState(enable, night, ad, token, (pushState, error) => {
if (error != null)
{
// failed.
// Display the message using error.message.
}
else
{
// succeeded.
}
});
Kotlin:
val pushToken = NBase.getPushToken()
val pushState = com.nbase.sdk.model.PushState(
enable = enable,
night = night,
ad = ad,
token = pushToken
)
NBase.setPushState(pushState) { status, e ->
if (error != null) {
// failed.
// Display the message using error.message.
} else {
// succeeded.
}
};
Java:
String pushToken = _NBase.getPushToken();
com.nbase.sdk.model.PushState pushState = new com.nbase.sdk.model.PushState(
Boolean.parseBoolean(enable),
Boolean.parseBoolean(night),
Boolean.parseBoolean(ad),
pushToken
);
NBase nBase = NBase.INSTANCE;
nBase.setPushState(pushState, (status, e) -> {
if (e != null) {
// failed.
// Display the message using e.getMessage.
} else {
// succeeded.
}
return null;
});
Swift:
NBase.setPushState(enable: enable, ad: ad, night: night, token: NBase.getPushToken()) { result in
switch result {
case .success(let data):
// succeeded.
case .failure(let error):
// failed.
}
}
Objective-C:
[NBaseBridge.shared setPushState:enable night:night ad:ad token:token :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
if (error) {
// failed.
// Display the message using error.localizedDescription.
} else {
// succeeded.
}
}];
プッシュを受信するかどうか設定を確認するには、以下のコードを呼び出します。
C#:
NBaseSDK.NBase.getPushState((pushState, error) => {
if (error != null)
{
// failed.
// Display the message using error.message.
}
else
{
// succeeded.
}
});
Kotlin:
NBase.getPushState() { state, e ->
if (error != null) {
// failed.
// Display the message using error.message.
} else {
// succeeded.
}
};
Java:
NBase nBase = NBase.INSTANCE;
nBase.getPushState((state, e) -> {
if (e != null) {
// failed.
// Display the message using e.getMessage.
} else {
// succeeded.
}
return null;
});
Swift:
NBase.getPushState() { result in
switch result {
case .success(let data):
// succeeded.
case .failure(let error):
// failed.
}
}
Objective-C:
[NBaseBridge.shared getPushState:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
if (error) {
// failed.
// Display the message using error.localizedDescription.
} else {
// succeeded.
}
}];
プッシュのテスト方法(モバイル)
プッシュテストは3つの方法で検証できます。
GAMEPOTダッシュボードで確認する方法
ダッシュボード > メッセージ > プッシュ通知メニューからプッシュを送信できます。(AOS) Firebaseコンソールでテストする方法
Firebase Console - プロジェクを選択 - Messaging - キャンペーンで新しキャンペーンボタンをクリックするとメッセージ送信をテストできます。
アプリから取得したトークンをコピーして貼り付けた後、+ボタンをクリックして、トークンを入力してテストボタンをクリックすると完了します。そのトークンで送信されたかどうか確認できます。
(iOS) CloudKit Consoleでテストする方法
CloudKit Console -> Push Notificationsに移動し、Notificationsを新規作成します。
Device Tokenと Payloadを入力するとそのトークンで送信できるかどうか確認できます。
トラブルシューティング
Q. java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process {パッケージ名}. Make sure to call FirebaseApp.initializeApp(Context) first.
A. このエラーは、gradleファイルにプッシュ設定が欠落している場合です。下記事項をご確認ください。
プロジェクト最上部の build.gradle.ktsをご確認ください。
plugins {
id("com.google.gms.google-services") version "4.4.1" apply false
}
app内の build.gradle.ktsをご確認ください。
plugins {
id("com.google.gms.google-services")
}
Q. org.gradle.api.GradleException: File google-services.json is missing. The Google Services Plugin cannot function without it.
A. このエラーは google-services.jsonが見つからない場合に発生します。このファイルがモジュール:アプリ単位のルートフォルダに正しく配置されているかご確認ください。
(例) ./project folder/app/google-services.json