我没有自己的服务器,客户端不需要服务器。我可以使用direbase通知吗?以及我如何计算上一次用户会话花了多少时间?
答案 0 :(得分:1)
答案 1 :(得分:1)
--------------------------------新答案------------- -----------------------
您应该能够使用Firebase控制台执行此操作。创建Cloud Message时,您可以在“目标”部分的“ Last App Engagement”中进行选择,然后选择要将消息发送给未与该应用互动1天的所有人。
此后,您在“计划”中将其设置为重复活动,然后将其设置为每天12点“每天”发生,并设置每个用户只能获得一次。现在您有了一个广告系列,每天中午12点检查谁不在1d应用程序中,并将其发送给他,但仅发送一次,而不是每天都不会向同一个人发送垃圾邮件。
--------------------------------旧答案------------- ----------------------
例如,您可以在应用程序中创建DailyJob,并且DailyJob可以自行检查自上次会话启动以来已有多少天并创建本地通知,也可以使用DailyJob发送以向Firebase发送自定义属性“ days_since_last_login”,并在Firebase中为离线2天,离线7天,离线31天等设置不同的广告系列。
要轻松创建DailyJob,您可以使用Evernote Android Job库。
答案 2 :(得分:1)
这很简单:根本不使用Firebase或互联网。
这是您要执行的操作:每次用户登录到您的应用程序,从onResume
开始48小时(2天)内创建警报,并取消以前的所有警报。或取消onResume
期间的先前警报,并在onPause
中创建一个新警报。
然后,setup the alarm receiver to send a local notification。 AlarmManager with Notification Android
每次用户打开您的应用程序时,它都会向后推送本地通知。如果两天没有使用它,他们会在以前使用它的同时收到通知。
答案 3 :(得分:1)
“我可以使用direbase通知吗?”
是的,您可以使用云功能代码。
只需在向数据库添加新通知后触发事件即可。
我的下面的代码在向数据库添加新通知后触发事件,并查找早于24小时的帖子。您可以使用它并将其更改48小时
下面的代码起作用:
1。检查数据库中是否有24小时以上的旧通知。
2。检索并删除(将其值更改为null);
//DELETE OLD NOTIFICATION LESS THAN 24HRS /////////////////
exports.deleteOldItems = functions.database.ref('/notification/{user_id}/{notification_id}').onWrite((change) => {
const ref = change.after.ref.parent; // reference to the parent
const yesterday = Date.now() - 86400000;
const oldItemsQuery = ref.orderByChild('time').endAt(yesterday);
return oldItemsQuery.once('value').then((snapshot) => {
// create a map with all children that need to be removed
const updates = {};
snapshot.forEach(child => {
updates[child.key] = null;
});
return ref.update(updates);
// execute all updates in one go and return the result to end the function
});
});
////////////////////DELETE FUNCTION ENDED HERE//////////////////////
最重要的部分是如何计算48小时(即2天)
PS:这仍然是24小时。找到一种可以转换48小时的方法时,我将更新答案。
const yesterday = Date.now() - 86400000;
编辑:172800000
是2天前(24小时)
现在,您从2天前减去当前日期,然后与通知日期进行比较。
const yesterday = Date.now() - 172800000;