2015-03-13 61 views
0

我想发送基于用户时间推送通知不基于UTC.I尝试push_time:新日期(pushDt)它成功触发在上午6时30分(UTC),但我想根据用户当地时间来触发它。我如何发送推送通知从本地解析到用户

Parse.Cloud.job("PushNtfct", function(request, status) { 

function dateFormat(date, format) { 

    format = format.replace("DD", (date.getDate() < 10 ? '0' : '') + date.getDate()); 

    format = format.replace("MM", (date.getMonth() < 9 ? '0' : '') + (date.getMonth() + 1)); 

    format = format.replace("YYYY", date.getFullYear()); 
    return format; 
} 
var todayDt = new Date(); 
todayDt.setDate(todayDt.getDate()+1); 

var pushDt = dateFormat(todayDt , "YYYY-MM-DD")+ "T06:30:00"; 
Parse.Push.send({ 
    channels: ["Daily"], 
push_time: new Date(pushDt), 
    data: { 
    alert: "Daily" 
    } 
}, { success: function() { 
    console.log("Succuss with Time, Local Push notification time was sent at : " + pushDt); 
    }, error: function(err) { 
    console.log(err); 
    } 
}).then(function() { 
    // Set the job's success status 
    status.success("Successfully Ran"); 
    }, function(error) { 
    // Set the job's error status 
    status.error("Fuck ..some damn error"); 
    }); 
}); 

回答

0

Installation对象有设备timeZone,它通常是一个字符串,你可以使用moment-timezone库,这个字符串解码成明智UTC +偏移量,你可以编码成您的日期"Z"一部分,以确保您推送在用户的发送当地时间。您联系Parse.UserInstallation的方式取决于您。

+0

谢谢你的回复,我发现他们通过卷曲提供了本地推送,并且我在javascript中使用httprequest来做到这一点,并且我发现了一个建议,如果您使用的是推送android,然后更改安装时区“亚洲/加尔各答”改为“亚洲/加尔各答”被忽略在这个时区内正常运作 – user3926701 2015-03-15 14:35:02