質問: $client->send($message); } catch (ServiceRuntimeException $e) { throw new PushException($e->getMessage()); } if ((bool) $this->response->getSuccessCount()) { foreach ($tokensRange as $token) { $pushedDevices->add($push->getDevices()->get($token)); } } } return $pushedDevices; } ``` このtryで落ちていると思われます。72行目はcatchでの`throw new....`部分です。 どこで落ちているか迄は追えたのですが、この先の解決方法が見つからず困っています。 これだけの情報では解決は難しいと思っています。調査先なども含めて教えていただけると幸いです。 (なにぶんLaravelなどについては初心者ですので、よろしくお願いいたします。) ### その他情報など 以前は問題なく動いていましたが、途中で次のような作業を行っています。 ・プッシュ通知の非同期化 このため、一度Laravelのキャッシュをクリアしました。 .envの書き換えも実行 非同期化については成功しています。 環境的な大きな変化としてはこれが思い当たります。 今回の不具合の確認では同期、非同期どちらでも同様な問題が起きていることを確認しています。 (結局は同じプログラムが呼ばれている。) 繰り返しになりますが、iOSでは問題なく稼働しています。 ### その後の調査 前回回答をいただいてから、さらに調査を行いました。 この件、GCM→FCM問題と考え、関連するライブラリのアップデート、エンドポイントの確認(fcmを向いているかどうか)を行いましたが、現象は変わらないようです。 400 Bad request が出ていますが、invalid messageというエラーも出ています。 ``` exception 'Sly\NotificationPusher\Exception\PushException' with message '400 Bad Request; invalid message' in /mnt/home/apache/..../vendor/sly/notification-pusher/src/Sly/NotificationPusher/Adapter/Gcm.php:72 ``` これを読むと、送信時のパラメータなどがおかしいので、リクエスト自体がおかしいと言うようにも読めます。 調べていくと、アプリ側はGCMのままでもプッシュ受信は可能とのことなので、やはり送信時の何かがおかしいと言うことになります。 元のライブラリのGitHubの方にも問合せをしておりますが、そちらはまだ返答無い状況です。 これですが、ライブラリを更新したら、「同期状態」ではエラーは出なくなりました。(プッシュはまだ飛ばない) 現象が変わらないと言うのは「非同期」通知の場合です。 なので、複合要因。 切り分けて、調査します。 まずは、同期状態でプッシュが飛ぶかどうか。(非同期の問題の要因は、おそらくキューワーカーリスタートすれば解決するかと)
回答: 普段はSNSでプッシュするのでGCMの都合はよくわかりませんが > > 400 Bad Request, invalid message > > > と言われているという事であれば、APIへのリクエストが正常に行われていない 具体的には、messageが不正、正しくない、nullとか空の可能性がある または、API自体が仕様変更されたため、パラメータが不足しているという事ではないでしょうか `Sly\NotificationPusher\Exception\PushException` という事なので https://github.com/Ph3nol/NotificationPusher Github上でIssue立てた方が早いきがしないでもないです。 > > (結局は同じプログラムが呼ばれている。) > > > これについては、非同期(Worker)でやる場合は、Modelが一旦シリアライズされるので 全く同一条件という事ではないかと思います (今まで何回かデシリアライズでこけた事が何度か、idだけ保存してModelは再度Findしたほうが懸命っぽい)