この記事について
Ionic
を用いたアプリ開発をしており、PUSH配信に FirebaseCloudMessaging
を使用しているのですが、iOSへのPUSH配信が出来なかったのでその時の解決方法です。
実装時の環境
- Ionic : 3.9.4
- Cordova: 8.0.0
- cordova-plugin-firebase: 2.0.5
- Java11 (APIサーバー)
- Firebase Admin SDK
現象
Ionic側
import { Firebase } from "@ionic-native/firebase/ngx";
export class Sample {
constructor(private firebase: Firebase) {}
public sample() {
// 通知許可の設定
this.firebase.hasPermission().then( data => {
console.log("data.isEnabled:" + data.isEnabled)
if(data.isEnabled != true) {
this.firebase.grantPermission().then( () => {
console.log("grantPermission:")
}).catch((error) => {
console.log("grantPermission Error:" + JSON.stringify(error))
})
}
})
}
上記のコードで トークン
の取得は正常に行えてるように見えました。
APIサーバー側
Firebase Admin SDK を用いて、
PUSH配信を行おうとすると、下記の例外が発生しました。
com.google.firebase.messaging.FirebaseMessagingException: Request contains an invalid argument.
at com.google.firebase.messaging.FirebaseMessaging.handleSendHttpError(FirebaseMessaging.java:291)
at com.google.firebase.messaging.FirebaseMessaging.access$600(FirebaseMessaging.java:55)
at com.google.firebase.messaging.FirebaseMessaging$1.execute(FirebaseMessaging.java:260)
at com.google.firebase.messaging.FirebaseMessaging$1.execute(FirebaseMessaging.java:240)
at com.google.firebase.internal.CallableOperation.call(CallableOperation.java:36)
Caused by: com.google.api.client.http.HttpResponseException: 400 Bad Request
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "INVALID_ARGUMENT"
},
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.ApnsError",
"statusCode": 400,
"reason": "BadDeviceToken"
},
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "message.token",
"description": "Invalid registration token"
}
]
}
]
}
}
解決策
xcodeでのビルド時に、下記の設定をする必要がありました。
Xcode > File > Project Settings > Build System [Lagacy Build System]
FCMのその他の設定について
こちら の記事を参考にさせて頂きました。
最後に
結構ハマってしまったので、誰かの助けになれば幸いです・・・!
共に働くWebエンジニアを募集しています!
不動産SHOPナカジツでは自社サービスを作っていく仲間を募集しています。
詳しくはWantedlyからお問い合わせください。
お待ちしております!