プッシュ通知からアプリ内の特定のviewを開く(Android)
プッシュ通知による起動から離脱させない方法
通常、プッシュ通知よる起動ではアプリのTOPが開きます。ユーザーはプッシュ通知の文言に惹かれて起動したのにも関わらず、該当箇所を探すのに手間取り、そのまま離脱につながってしまうことがあります。離脱率の低下を防ぐため、プッシュ通知からアプリTOPではなく、任意の場所に直結した導線を張りましょう。
(例)
・新着記事のプッシュ通知から、該当記事に遷移させたい。
・セール情報のプッシュ通知から、セール商品特集ページに遷移させたい。
・新キャラ追加のプッシュ通知から、ガチャページに遷移させたい。
設定方法を以下にてご説明させて頂きます。
プッシュ通知にURLを添えて開く方法
Growth Pushのプッシュ通知には、カスタムフィールドという形で、ユーザーに表示されるメッセージ以外のデータを添えることが可能です。
このデータにWebページのURLを添えることで、プッシュ通知を開いたユーザーにそのURLのWebページを即座に見せることが可能です。
Androidで、プッシュ通知ごとにURLを指定して、アプリ起動時に開く方法
このURLの代わりにアプリ内の特定の画面を識別するIDを指定することで、プッシュ通知からアプリ内の特定の画面を開くことも可能です。
プッシュ通知からカスタムフィールドのデータの受け取り
GrowthPush.getInstance().setReceiveHandler(new DefaultReceiveHandler(new DefaultReceiveHandler.Callback() { @Override public void onOpen(Context context, Intent intent) { String url = intent.getExtras().getString("url"); if (url == null) { super.onOpen(context, intent); return; } // TODO URLをWebブラウザで開く処理 } }));
※setReceiveHandlerはApplicationクラスを継承したクラスのonCreateで実装してください。
URLは上記画像のようにカスタムフィールドで指定して下さい。
画面を開く際の具体的な実装について説明します。
画面を識別するIDにしたがって画面を開く
たとえば、画面を識別するIDとして、独自のURLスキームをもつURLを指定するとします。
myapp://example.com/areas/123 このURLは、エリアのうちID:123の画面へ直接遷移するというURLです。
先のプッシュ通知受信時の処理として、たとえば下記のようなURLのパースと振り分けの処理を実装します。
public boolean openUrl(String url) { // URLスキームがHTTPの場合は、Webブラウザで開く if (url.startsWith("http") || url.startsWith("https")) { // TODO HTTPのURLをWebブラウザで開く処理 return true; } // 独自のURLスキームだった場合 if (url.startsWith("myapp")) { URL urlScheme = new URL(url); List<String> pathComponent = new ArrayList<String>(); Pattern pattern = Pattern.compile("/+([^/]+)"); Matcher matcher = pattern.matcher(urlScheme.getPath()); while (matcher.find()) { pathComponent.add(matcher.group(1)); } if(pathComponent.size() >= 3) { int areaId = Integer.valueOf(pathComponent.get(2)); // TODO 画面を開く処理 } // ...(略)... } // ...(略)... return true; }
具体的な実装については、アプリに依存する部分が多いですが、同様の手法によって、プッシュ通知からアプリ内の特定の画面を開くことが可能です。