【Swift】アプリに求められる機能から考えるプッシュ通知(ローカル/リモート)【プッシュ通知】
はじめに
実際に過去にiOS開発で顧客へのヒアリング・要件定義を行ってきた中で、
私の場合「これはプッシュ通知を使うべきだな」というシーンなどは
もう自然になんとなくの考えで思いつきます。
しかしながら、初学者にとっては敷居の高い話なのかもしれないと思い、今回記事を書くことにしました。
プッシュ通知の種類
プッシュ通知には、ローカル通知・リモート通知と一般的に呼ばれる通知がございます。
ローカル通知
ローカル通知はオフラインでデバイス内で完結するような通知です。
イメージとしてはどのスマホでも入っている、アラームアプリのイメージでしょうか。
アラームアプリでタイマー5分と設定した場合、インターネットに接続して何かを取得していないということはスマホ初心者でもぼんやりイメージが付く話だと思います。
このようにオフラインでも動作が保障されており、デバイス1台の中で完結しているようなプッシュ通知をローカル通知と言います。
リモート通知
上記のようなイメージで、実装することが可能です。
実装する上で、AppleのDevelopmentアカウントが必要で、その上でFirebase/AWSのようなプッシュ通知に対応したサービスが必要です。
はじめて行う場合はGoogleのクラウドサービス Firebase、Amazonのクラウドサービス AWSで問題ないかと思います。
ローカル通知と大きく異なる点は、デバイス以外の端末からデバイスに向けて通知を送れる点です。
たとえば例として、お持ち帰りアプリを想定すると、店舗側が注文完了した際に店舗PCから「注文済み」ステータスになったと入力すると、お客様のデバイスに「注文が完了しました!お受け取りください」という通知が届きます。
リモート通知を採用するべきアプリの機能
・何かしらのタイミングでデバイスに対して通知を送りたい時
・そのタイミングがデバイス内では知り得ない時
先程のアプリの例を挙げて考えてみましょう。
たとえば例として、お持ち帰りアプリを想定すると、店舗側が注文完了した際に店舗PCから「注文済み」ステータスになったと入力すると、お客様のデバイスに「注文が完了しました!お受け取りください」という通知が届きます。
例えば、注文が終わってから店舗のスタッフさんが作り終えたかどうかはデバイス内では知り得ない情報っていうのは簡単に分かるかと思います。
注文後の指定時間後、たとえば5分後に「注文が出来上がりました!」という通知が飛んできたらアプリとんでもない品質ですよね。そういう実装は絶対しないと思います。
今までの要件定義やヒアリングなどでリモート通知を実装しないといけないようなアプリは以下のような機能を実装している時でした。
・チャット、メールアプリ
・お問い合わせアプリ
・お持ち帰りアプリ
・アプリユーザーに対して、広告としての側面を持ったプッシュ通知を行いたいアプリ
・他のユーザーが何か行動したことを通知したい場合(Twitter いいね等)
ローカル通知を採用するべきアプリの機能
リモート通知よりも判断が難しいと思います。
というのも分かりにくい、判断しにくいのはこちらです。
基本的にヒアリング・要件定義の際に、顧客サイドから
「プッシュ通知を実装してください」って言ってくるパターンって
あんまり無いので、技術者であれば「プッシュ通知があればユーザーにとって親切なので必須で実装してみましょう」と提案してみましょう。
基本的には顧客は顧客自身が考えることのできない、
細かいところに対する提案を求めているので、うまく提案して、信用を勝ち取りましょう。
デバイス内で完結するローカル通知を採用するべきアプリの例としては以下が思いつきました。
・アプリ内で処理に必要な時間が長く、アプリを待機状態にして他の時間潰しを行われていることが想定できる時
・完了などのタイミングをユーザーが知りたい場合
・リマインドとして
実際の例としては、映像編集アプリなどでしょうか。
映像編集でエンコードと言われる動画ファイル化の時の処理はかなり長く、少なくとも5秒で終わるようなものではありません。
でもユーザーはエンコードが終わるタイミングを終わった瞬間に知りたいですよね。だってすぐYoutubeにアップロードするなり、メールで送るなりしたいですもん、可能な限り早く。
そういった場合に「完了しました!」と通知してあげることはかなり親切と言えるでしょう。
次にリマインドとしての通知機能です。
ざっくり説明すると、アラーム機能が該当すると思います。
明日の17時と設定すると、明日17時にアプリ内から通知が来て、「予定があった!」とリマインドすることができます。
最後に
基本的にはプッシュ通知って極端な話をすると、必ずしも必要な機能ではないのです。
なぜならLINE来た時に通知しなくても、LINEアプリを都度ひらけばトークが届いているかどうかは分かるんですよ。
しかしながら、それだと良質なユーザーエクスペリエンス(「ユーザーが、ひとつの製品・サービスを通じて得られる体験」)を提供できているとは言いません。
それ故に、機能としてプッシュ通知で補ってあげる必要があるのです。
プッシュ通知を実装するべきかどうかの判断は、最初のうちは慣れないと思いますが、都度「ここの機能はプッシュ通知は必要かな?」と疑っていくことが大事ではないか、と思います。