Titanium - iOS后台服务无法正常工作

时间:2013-08-02 01:14:05

标签: ios titanium background-service

我正在尝试将变量传递给我的backgroundService.js,并设置通过此变量的推送时间...但它不起作用...只有在我以毫秒手动设置时间时才能工作... < / p>

// app.js

var timer = 2000

Ti.App.Properties.setString( 'pushTime', timer )

var service = Ti.App.iOS.registerBackgroundService({
    url:'bg.js'
})


// bg.js

var timer = Ti.App.Properties.getString( 'pushTime' )
Ti.API.info( timer ) 

var notification = Ti.App.iOS.scheduleLocalNotification({
    alertBody:"Passou a bebedeira ja?",
    alertAction:"Ok",
    userInfo:{"hello":"world"},
    sound:"pop.caf",
    badge: 1,
    date:new Date(new Date().getTime() + timer )
})

有人知道为什么当我使用timer代替2000时,它不起作用?

由于 3.1.1 iOS

1 个答案:

答案 0 :(得分:1)

DHennrich,Ti.API.info( timer )返回2000并不意味着2000是一种数字。实际上它是一个字符串,因为您使用setString方法来存储值并使用getString()检索它。当您使用setString时,它将值存储为字符串,getString始终返回字符串avlue。这就是为什么当你使用2000而不是timer变量时你的代码工作的原因。

来自API Documentation

  

getString(String property,[String default]):String

     

以字符串数据类型的形式返回属性的值。参数

property : String

Name of property.
default : String (optional)

Default value to return if property does not exist.
     

返回

String

您可以使用setIntsetDouble代替setString来设置属性并分别检索使用getIntgetDouble

尝试使用Ti.App.Properties.setInt( 'pushTime', timer );

存储值

您可以使用

检索该值

var timer = Ti.App.Properties.getInt( 'pushTime' );

我希望它能解决你的问题。