kotlin 如何从带有深链接的通知导航到可组合屏幕?

mccptt67  于 2023-03-09  发布在  Kotlin
关注(0)|答案(1)|浏览(115)

我想在单击包含标题、正文和ID等数据的通知时导航到可组合屏幕。创建路由时应将此ID传递给可组合屏幕。

object Screen : AppDestination("screen/{id}") {
fun createRoute(id: String): String {
    return "screen/$id"
}

这是我的组合屏幕导航

fun NavGraphBuilder.screenGraph(
    navController: NavHostController
) {
    composable(
        route = Screen.route,
              arguments = listOf(navArgument("id") { type = NavType.StringType },
        navArgument("idnotation") { type = NavType.StringType }),
    deepLinks = listOf(
        navDeepLink {
            uriPattern = "myapp://screennavigation/idnotation={idnotation}"
        }
    ) {
        Screen(
            payloadId = it.arguments?.getString("id"),
        )
    }
}

“id”是单击列表中的某个项目以导航到该项目的时间。
“idNotation”是我从通知中获得的ID。
如果在调用路由createRoute之后在深层链路中获取idNotation,如何将其传递给路由?
我测试了如何将Id传递给通知的挂起Intent内的Intent,这很有效,我得到了正确的ID,只是不确定如何将其传递给路由。

qni6mghb

qni6mghb1#

你的深层链接是

"myapp://screennavigation/idnotation={idnotation}"

这意味着{idnotation}占位符的值将被放入带有键idnotation的参数中,如果您希望它填充id字段(以匹配您的route和arguments列表),则需要使用{id}

uriPattern = "myapp://screennavigation/idnotation={id}"

相关问题