2015-09-25 114 views
2

如果我想发送包含日期时间的推送通知,是否可以包含用户的时区?解析推送通知在推送时包含用户时区

Parse.Push.send({ 
    where: query, // Set our Installation query 
    data: { 
     type: 2, // new applications push 
     applicationID: applicationID, 
     startTime: startTime, 
     "alert" : { 
      "title-loc-key": "SUCCESSFUL_TITLE", 
      "loc-key": "SUCCESSFUL_MESSAGE", 
      "loc-args": [startTime] 
     }, 
     "sound": "default", 
     "content-available" : "1", 
     "badge" : 'Increment' 
    } 

所以推送消息显示如“[一些文本]在2016年1月2日,19:00 UHR”的时间。 我在云代码中用moment.js对硬盘时区进行了硬编码 - 但是对于将来来自不同地区的不同用户应该在各自的时区中获取日期和时间信息......是否可以通过Parse.Push调用实现此目的手动迭代安装表?

+0

我更新代码显示。 [tag:parsing]是关于解释字符串的。你的意思是[tag:parse.com],与Parse.com平台有关。不过,目前还不清楚你在问什么。你能再举几个例子说明你想看到什么吗?你是如何融入moment.js的?实际上通过什么电线? –

+0

谢谢。我们使用云码功能向用户发送推送通知。此推送消息包含日期时间。考虑到未来的发展,这个日期时间根据用户所处的时区而不同。 Wie必须处理发送进程服务器端,并从服务器端发送特定的日期时间。我的问题是,如果Parse提供了一个默认的函数来调整消息中的用户时区,或者如果我需要创建一个手动方法遍历所有安装对象并为每个用户(或使用通道)创建单独推送 – Sierra101

+0

用户*看*邮件内容的时间?如果没有,只需将所有用户转换为UTC即可。 –

回答

0

根据Parse.com文档,有一个Installation对象,其中您可以通过参数timeZone获取用户的时区。

timeZone:目标设备所在的当前时区。每次从设备保存安装对象时,都会同步该值。

在其他地方为他们的REST API的文档中,他们谈论local push scheduling,并描述IANA时区ID的术语,如America/New_YorkAmerica/Los_AngelesInstallation.timeZone参数。这些ID与moment-timezone使用的ID相同。

所以首先你需要加载momentmoment-timezone,以及一些时区数据。可能你想要moment-timezone-2010-2020.js文件。

然后,你可以做这样的事情:

var timeZone = Installation.timeZone; // or however you get this from Parse.com 

var startTime = '2015-09-27T12:00:00Z'; // ISO-8601 format 

var m = moment(startTime).tz(timeZone); // converted to the user's time zone 
var s = m.calendar(); // or m.format, or whatever you want 

var message = "Hi Bob, your event starts " + s; 

随后推出的消息,你在你的问题

+0

另外,很抱歉,我不是100%熟悉Parse.com。也许其他人可以阐述或限定这种方法。我不确定'Installation.timeZone'是否可用,或者是否必须使用'Parse.Query'来获取它。 –

+0

这可能是一个解决方案,但我的问题是,如果有可能将Parse.Push命令中的timeZone自动合并(见上文) - 所以说你只需要调用Parse.Push(...)和一个消息字符串和一个时间(出现在推送消息中)并且解析自动调整这个时间到用户时区。你的例子是如果没有这种可能性会做什么 - 创建一个发送个人推送的循环 - 但是这样有一个执行限制。这是如果这个消息传递给数千名接收者的主要观点。 – Sierra101

+1

啊,我明白了。那么我会让有更多Parse.com经验的人对此作出回应。听起来像你需要某种模板方法。或者可能按时区分组您的邮件,并向每个时区中的一批用户发送不同的邮件。 –