我有一个用例,用户 A 可以说用户 B 从用户 A 那里借了一些钱,类似于 Splitwise 之类的应用程序。
我正在使用 firestore 来存储数据。在这种特殊情况下,我会将其作为文档存储在“交易”集合中,该集合将具有以下字段:
数量:20
fromUser:用户 A 的
uid toUser:用户 B 的 uid
这里的问题是用户 B 尚不存在,因此用户 B 没有 uid。我想要做的是为用户 B 创建一个临时用户,其电子邮件地址将生成一个 uid。稍后当用户 B 在应用程序上注册时,同一个用户将升级为用户 B 使用的任何身份验证提供程序的永久用户。
在搜索时,我遇到了 - https://www.freecodecamp.org/news/heres-what-i-wish-i-knew-before-i-started-using-firebase-9110d393e193/
其中提到这可以通过现在折旧的 firebase 邀请来实现。那么,现在还有其他方法可以实现这种行为吗?
我浏览了有关 Android 12 启动屏幕以及迁移现有启动屏幕的文档,但它没有明确提及如何根据条件选择启动屏幕。
具体来说,我之前添加了用户是否已登录的检查:
class SplashScreenActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash_screen)
if(viewModel.isUserSignedIn()) {
navigateToMain()
} else {
navigateToAuth()
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中SplashScreenActivity被标记为默认启动活动。当我保持这样时,Android studio 会发出警告 - The application should not provide its own launch screen。
我按照指南修改了它并setContentView从活动中删除并调用了installSplashScreen。
class SplashScreenActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
if(viewModel.isUserSignedIn()) {
navigateToMain()
} else {
navigateToAuth()
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我在模拟器上运行时,它似乎按预期工作,但 Android Studio 继续发出相同的警告。
这是迁移到 Android 12 初始屏幕的正确方法吗?如果是,为什么 …
我将用户的 firebase 云消息传递注册令牌存储在 firestore 用户集合中,每当我发送通知时,我都会删除未使用的令牌。我正在使用 admin sdk 在云功能上执行此操作。我正在使用的代码是-
let removeRegistrationTokens = async function (userId: string, tokens: string[]) {
await db.collection('users')
.doc(userId)
.update("tokens",admin.firestore.FieldValue.arrayRemove(tokens)
.catch(logError)
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,并且没有从数组中删除任何值。我检查了标记数组,传递的值是正确的。如果我简单地将代码更改为
.update("tokens",admin.firestore.FieldValue.arrayRemove(tokens[0])
Run Code Online (Sandbox Code Playgroud)
这是从 firestore 中的 tokens 数组中删除数组中的第一个元素。根据文档,它应该删除数组中传递给它的所有元素。
如果您的文档包含数组字段,您可以使用 arrayUnion() 和 arrayRemove() 来添加和删除元素。arrayUnion() 将元素添加到数组中,但仅添加尚未存在的元素。arrayRemove() 删除每个给定元素的所有实例。
有什么帮助可以解释为什么会发生这种情况吗?
我想在border元素中垂直写入文本.如图所示.
我已尝试使用此代码使用RenderTransform
<Border Width="80"
Background="Teal">
<TextBlock Text="CATEGORIES"
Foreground="White"
FontFamily="Segoe UI Black"
FontSize="30">
<TextBlock.RenderTransform>
<RotateTransform Angle="-90" />
</TextBlock.RenderTransform>
</TextBlock>
</Border>Run Code Online (Sandbox Code Playgroud)
这会垂直旋转文本,但TextBlock会在Transform之前获取高度和宽度的旧值,并且不会完全显示文本.因此,文本在80像素(边框元素的宽度)之后被切断.虽然搜索我发现使用LayoutTransform可以解决问题,但它在UWP应用程序中不可用.如何在UWP XAML中执行此操作?