優先度の高いメッセージが表示されます。 (同一優先度のメッセージの場合、登録日時が新しいメッセージが表示されます。) その後、起動トリガーを再度満たすと次のメッセージが表示されます。下記が具体例となります。■設定・メッセージA:優先度10・メッセージB:優先度1・トリガー:メッセージABともに、 「アプリを開く」にする■結果メッセージAが表示されます。 また、メッセージAが表示された後に、再度アプリを開いたタイミングでメッセージBが表示されます。※なお、メッセージAに「1日に配信する最大回数」を設定していた場合は、その回数分メッセージAが表示された後に、再度アプリを開いたタイミングでメッセージBが表示されます。
参考|アプリ内メッセージの優先度について
アプリ内メッセージが表示されない場合は、以下をご確認ください。
※「ID指定」をファイルアップロードで行った場合は、反映に15~30分程度かかります。
アプリ内メッセージは、本番配信を行ったあと、「有効化」する必要があります。登録したアプリ内メッセージより[有効化する]をクリックします。
対応には以下の実装が必要です。
遷移しない場合、実装されているかご確認ください。
「8.3.3 デリゲート 」、特に「8.3.3.4 コンテンツ内のボタン押下時処理」に記載した実装。
URLを開く実際の処理(組み込みガイドにおけるstartProcessUsing(url: url) に該当する部分の実装)については、アプリ側で適切なものを適宜選んで実装してください。
参考:SDK組込みガイド(従来版)
原則は以下のメソッドを利用するのを推奨しています。https://developer.apple.com/documentation/uikit/uiapplication/1648685-open
シンプルな実装例)
if #available(iOS 10.0, *) { UIApplication.shared.open(URL(string: url)!, options: [:], completionHandler: nil) } else { // iOS9以下をサポートしない場合は、この分岐は不要です UIApplication.shared.openURL(URL(string: url)!) }
アプリ内メッセージでwebviewで表示されるhtmlは、以下の仕様となっています。
画面全体の横幅に対して、画面中央から80%の割合で表示する
「画像が横幅いっぱいに表示されて、右上の×ボタンが見切れてしまう」といった表示が見切れるような場合は、アプリ側で表示制御を行っている可能性があるため、HTMLをどのように表示させているかご確認ください。
アプリ内メッセージの配信結果は、プッシュの配信一覧と同様、翌朝8時までに集計されます。
参考:管理画面のプッシュ通知「配信結果」は、リアルタイムで数値が反映されますか?
複数のアプリ内メッセージを同じタイミングで表示されるように設定した場合、優先度の高いメッセージが表示されます。また、起動トリガーのイベントが再度発生したタイミングで次のメッセージが表示されるため、連続でアプリ内メッセージが表示されることはありません。
例)設定内容を以下とした場合
■表示順
※「同じ期間・同じ起動トリガー・同じ優先度」の場合は、「登録日時が新しいもの」から表示されます。
各OS毎で以下のようにカスタマイズ実装いただくことで可能となります。■前提既にお知らせを受け取っているエンドユーザーに対して有効な方法となりますので、事前に配信IDを知っている前提となります。お知らせを受け取っていないエンドユーザーに対して、アプリ内メッセージから遷移してお知らせを表示しようとした場合は「表示できません」という表示になります。
■サンプル例として遷移先URLを「popinfo.sample.link://1234567890」とした場合のサンプルとなります。※「1234567890」は、配信IDとなります。
AndroidManifest.xml
<!-- カスタムURL「popinfo.sample.link://」から呼び出されるActivity --><activity android:name=".LinkActivity" android:exported="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="popinfo.sample.link" /> </intent-filter></activity>
@Override protected void onInappMessageTapAction(String actionUrl) { try { Uri uri = Uri.parse(actionUrl); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } catch (ActivityNotFoundException e) { } }
public class LinkActivity extends Activity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); Uri data = intent.getData(); // 取得したURIからメッセージ詳細を開く処理 if (!data.getHost().isEmpty()) { PopinfoUiUtils.showMessageView(LinkActivity.this, Long.parseLong(data.getHost())); finish(); } }}
popinfo.sample.link://1234567890
PROJECT -> TARGETS -> Info -> URL Types にディープリンクで使用するスキーマを登録します。
PopinfoEventActionReceiverDelegate
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { if let contexts = URLContexts.first { guard let host = contexts.url.host else { return } if let messageId = Int(host) { //お知らせを更新してからお知らせ詳細を表示する PopinfoReceiver.shared.updateMessages { isOk, errorMessage, newMessages in let detailVC = PopinfoDetailViewController(nibName: "PopinfoDetailViewController", bundle: Bundle.main) detailVC.messageId = messageId self.showViewController(viewController: detailVC) } } }}