在我的 Flutter 应用程序中,我想将从 Firebase 数据消息接收的数据保存到 SharedPreferences。我的 FirebaseMessaging 对象配置如下:
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) {
// this works fine
print("onMessage: ");
},
onLaunch: (Map<String, dynamic> data) {
print("onLaunch: ");
},
onResume: (Map<String, dynamic> data) {
print("onResume: ");
},
onBackgroundMessage: myBackgroundMessageHandler,
);
Run Code Online (Sandbox Code Playgroud)
这是顶级 myBackgroundMessageHandler 方法:
Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
// This doesn't work
print("background message"); // this isn't even printed!
SharedPreferences.getInstance().then(...) // here I have to save some data
}
Run Code Online (Sandbox Code Playgroud)
问题是 myBackgroundMessageHandler 似乎根本没有被调用。然而,通知是通过电话收到的。我还尝试从消息中删除通知字段,在这种情况下,调用了 myBackgroundMessageHandler 但通知未到达。有没有办法既接收通知又触发方法?
push-notification sharedpreferences firebase flutter firebase-cloud-messaging
我有两个 Firebase 项目,一个用于开发 (project-dev),一个用于生产 (project-prod)。
我初始化了 firebase CLI,用于编写和部署链接到项目产品的云功能。然后我运行firebase use --add
并添加了project-dev,以便我可以将相同的功能部署到两个项目;我不想将同一个函数重写两次。
此时,我就遇到了问题。在函数中,我必须向实时数据库写入一些内容,但是当我将函数部署到project-dev 时,它会写入project-prod 的数据库。
我想要实现的是该函数必须引用它部署到的项目的数据库。这样我就有一个函数,当它部署到project-dev时,它会写入project-dev的数据库,当它部署到project-prod时,它会写入project-prod的数据库。
有可能实现吗?如果不行的话,该走什么路呢?
编辑
功能代码:
exports.AddOrders= functions.https.onRequest(async (req, res) => {
async function addOrder(key, value) {
var ref = app.database().ref("/orders");
return ref.child(key).set(value);
}
var orders = req.body['orders'];
var promises = [];
for (var key in orders) {
promises.push(addOrder(key, orders[key]));
}
Promise.all(promises).then(
_ => {
res.sendStatus(200);
return null;
}
).catch(err => {
res.send(err);
})
});
Run Code Online (Sandbox Code Playgroud)
(这个函数工作正常,问题是它写入了错误的数据库)
environment firebase firebase-realtime-database google-cloud-functions
我正在尝试构建一种健身应用程序。我想知道用户速度,还想显示用户行驶的距离。我已经知道如何使用 Geolocator 包获取它,但数据不够精确,事实上,即使用户不移动(并且行进距离增加),我也会收到位置更新。我想知道是否有更好的解决方案。其他健身应用如何做到如此精准?
假设我有 3 张表:
我想要做的是将 Table1 和 Table2 连接起来,然后选择具有特定列值的行(例如 col4 == "123")
我尝试过的:
supabase.from("Table3").select(
'''
Table1 (
col1,
col2
),
Table2 (
col3,
col4
),
'''
).eq("Table2.col4", "123").execute();
Run Code Online (Sandbox Code Playgroud)
这样做的问题是,对于与查询匹配的行,它返回具有 Table1 和 Table2 属性的正确对象,但对于与查询不匹配的行(因此不应返回),它返回具有 Table1 属性和 Table2 的对象属性设置为 null。
上述查询的示例:
表 1 |id | 第 1 列 | 列2| |---|------|-----| |1 | 值1 | 值2| |2 | 值3 | 值4|
表2 |id | 第 3 栏 | 第 4 栏 | …
flutter ×4
firebase ×2
dart ×1
environment ×1
flutter-row ×1
geolocation ×1
layout ×1
supabase ×1
widget ×1