我的服务器需要发送一个 Apple 推送通知,其中包含类似“您的司机将在下午 2:45 到达”的警报。最好不必将用户的时区和时间格式首选项拉到服务器上,而只需传递某种通用时间点指示器(例如纪元秒或 UTC 时间戳)并让 iOS 设备转动将其转换为用户首选格式的时间戳。
这可能吗?
我的服务器需要发送一个 Apple 推送通知,其中包含类似“您的司机将在下午 2:45 到达”的警报。最好不必将用户的时区和时间格式首选项拉到服务器上,而只需传递某种通用时间点指示器(例如纪元秒或 UTC 时间戳)并让 iOS 设备转动将其转换为用户首选格式的时间戳。
这可能吗?
简短的回答——通常是“不”。这是苹果文档:
如果通知到达时目标应用程序未运行,则会播放或显示警报消息、声音或标记值。如果应用程序正在运行,iOS 会将其作为 NSDictionary 对象传递给应用程序委托。
由于您的应用程序通常不会运行,因此您没有机会解释 APN 包的内容。但是,如果您确实希望在运行时只获得 APN,那么您确实有机会执行特定于应用程序的操作。
注意 - 您还有用户语言的问题。您当前为“您的司机...”选择了英语
典型的方法是在您的服务器上记录用户的时区和语言(以及其他区域设置信息),通常是在注册时。然后,当您的服务器生成 APN 时,它会针对用户的区域设置对其进行自定义。
不,没有办法扭转这个消息。
我认为您应该在服务器上永久获取时区。