プッシュ通知からアプリ内の特定のviewを開く(iOS)
プッシュ通知による起動から離脱させない方法
通常、プッシュ通知よる起動ではアプリのTOPが開きます。ユーザーはプッシュ通知の文言に惹かれて起動したのにも関わらず、該当箇所を探すのに手間取り、そのまま離脱につながってしまうことがあります。離脱率の低下を防ぐため、プッシュ通知からアプリTOPではなく、任意の場所に直結した導線を張りましょう。
(例)
・新着記事のプッシュ通知から、該当記事に遷移させたい。
・セール情報のプッシュ通知から、セール商品特集ページに遷移させたい。
・新キャラ追加のプッシュ通知から、ガチャページに遷移させたい。
設定方法を以下にてご説明させて頂きます。
プッシュ通知にURLを添えて開く方法
Growth Pushのプッシュ通知には、カスタムフィールドという形で、ユーザーに表示されるメッセージ以外のデータを添えることが可能です。 このデータにWebページのURLを添えることで、プッシュ通知を開いたユーザーにそのURLのWebページを即座に見せることが可能です。
iOSで、プッシュ通知ごとにURLを指定して、アプリ起動時に開く方法
このURLの代わりにアプリ内の特定の画面を識別するIDを指定することで、プッシュ通知からアプリ内の特定の画面を開くことが可能です。
プッシュ通知からカスタムフィールドのデータの受け取り
UIApplicationDelegateの実装クラスに下記のコードを実装することで、プッシュ通知からカスタムフィールドのデータを受け取ることができます。
- (BOOL) application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; if (userInfo) { // TODO userInfoから画面を識別するIDを取得して画面を開く } // ...(略)... return returnValue; }
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { if (application.applicationState == UIApplicationStateActive) return; // TODO userInfoから画面を識別するIDを取得して画面を開く }
IDは上記画像のようにカスタムフィールドで指定して下さい。
画面を開く際の具体的な実装について説明します。
画面を識別するIDにしたがって画面を開く
たとえば、画面を識別するIDとして、独自のURLスキームをもつURLを指定するとします。
myapp://example.com/areas/123
このURLは、エリアのうちID:123の画面へ直接遷移するというURLです。
先のプッシュ通知受信時の処理として、たとえば下記のようなURLのパースと振り分けの処理を実装します。
- (BOOL) openUrl:(NSURL *)url { // URLスキームがHTTPの場合は、Webブラウザで開く if ([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https"]) { // TODO HTTPのURLをWebブラウザで開く処理 return YES; } // 独自のURLスキームだった場合 if ([url.scheme isEqualToString:kMyAppUrlScheme]) { NSArray *pathComponents = url.pathComponents; if ([pathComponents count] >= 3) { // パスを確認して処理を振り分ける if ([[pathComponents objectAtIndex:1] isEqualToString:@"area"]) { NSUInteger areaId = [[pathComponents objectAtIndex:2] integerValue]; // TODO 指定のエリア画面を開く処理 } // ...(略)... } // ...(略)... } return YES; }
具体的な実装については、アプリに依存する部分が多いですが、同様の手法によって、プッシュ通知からアプリ内の特定の画面を開くことが可能です。