各OS毎で以下のようにカスタマイズ実装いただくことで可能となります。
■前提
既にお知らせを受け取っているエンドユーザーに対して有効な方法となりますので、事前に配信IDを知っている前提となります。
お知らせを受け取っていないエンドユーザーに対して、アプリ内メッセージから遷移してお知らせを表示しようとした場合は「表示できません」という表示になります。
■サンプル
例として遷移先URLを「popinfo.sample.link://1234567890」とした場合のサンプルとなります。
※「1234567890」は、配信IDとなります。
Android
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>- 組み込みガイド > 各種機能 > アプリ内メッセージ の「画面遷移のサンプル」箇所を参考に、アプリ内メッセージのボタン押下時にURLを開く処理を追加します。
@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) { } }
- DeepLinkで開くクラスを新規追加します。
LinkActivity.java
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
と指定します。
iOS
-
PROJECT -> TARGETS -> Info -> URL Types にディープリンクで使用するスキーマを登録します。
PopinfoEventActionReceiverDelegate
にアプリ内メッセージで「遷移先指定」の指定がされたボタンをタップされた時のコールバックを実装し、URLを開くようにします。
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)
}
}
}
}