0

我正在尝试将一个变量传递给我的 backgroundService.js,然后他们通过这个变量设置推送时间......但它不起作用......只有在我手动设置时间(以毫秒为单位)时才起作用......

// 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

4

1 回答 1

1

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

来自API 文档

getString(字符串属性,[字符串默认值]):字符串

将属性的值作为字符串数据类型返回。参数

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' );

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

于 2013-08-02T03:41:12.723 回答