【プッシュ通知】 LaravelでPush7 APIを叩く

    public function store(Request $request)
    {
        [省略]
        * ValidatesRequestsトレイトのメソッドによる
        バリデーション。
        * Intervention ImageによるOrientationの解除やサイズ圧縮。
        

        [Push 7APIを叩く処理]
        /**
         * 遅延処理のパラメータは含めず。
         * curl -X POST (API_URL)+($appno)+/send
         * アイコン画像URLに関しては、ダッシュボードGUI画面で画像を別タブで開き、
         * URLを確認。
         */

        // [required] 1 
        $title = "通知タイトル";
        // [required] 2
        $body = "新しい投稿があります。確認をお願いします。";
        // [required] 3
        // 通知時に表示されるアイコン画像のURL。
        // &や?や=が含まれてはいけない。 
        // スキーマはhttpsであること。
        $icon = "https://dashboard.push7.jp/uploads/[ハッシュ値].png";
        $url = "通知をタップした際に移動させたいページのURL";
        $apikey = "API_KEY";

        $apiurl = "https://api.push7.jp/api/v1/API_NUM/send";

        $headers =  array(
            'Content-Type' => 'application/json',
        );

        $data = array(
            // [required] 1 
            'title' => $title,
            // [required] 2 
            'body' => $body,
            // [required] 3
            'icon' => $icon,
            // [required] 4
            'url' => $url,
            // [required] 5
            'apikey' => $apikey
        );

        $data = json_encode($data);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL,$apiurl);
        $result = curl_exec($ch);
        // dd($result);

        curl_close($ch);


        $request->session()->flash('flash_message', '新規投稿が完了しました!');
        return redirect()->route('posts.index');
    }

Unicodeと日本語の変換ツール

https://www.kwonline.org/u_esc_seq.php

[ケース1] パラメータ不足

JSONにiconを加えていない場合、

"{"error":"\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059"}\n"
"{"error":"パラメータが不足しています"}\n"

[ケース2] アイコンURLが不正。

// $icon = "";とすると、

"{"error":"\u4e0d\u6b63\u306a\u30a2\u30a4\u30b3\u30f3\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f"}\n"
"{"error":"不正なアイコンが指定されました"}\n"

[ケース3] アイコンURLのスキーマhttps

// $icon = "push7_icon.png";とすると、

 "{"error":"\u4e0d\u6b63\u306a\u30a2\u30a4\u30b3\u30f3\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f"}\n"
"{"error":"不正なアイコンが指定されました"}\n"

[ケース4] パラメータ[通知タイトル]の長さが不正

{"error":"\u30d1\u30e9\u30e1\u30fc\u30bf[\u901a\u77e5\u30bf\u30a4\u30c8\u30eb]\u306e\u9577\u3055\u304c\u4e0d\u6b63\u3067\u3059\u30021\u4ee5\u4e0a128\u4ee5\u4e0b\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}\n"
 "{"error":"パラメータ[通知タイトル]の長さが不正です。1以上128以下である必要があります。"}\n"