2013-08-02 75 views
0

我想通過一個變量到我的backgroundService.js和他們通過這個變量設置推送時間...但它不工作...只有當我手動設置時間以毫秒爲單位...鈦 - iOS背景服務不工作

// 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.1iOS

+0

我不知道我是否瞭解你,但我的代碼應該工作...因爲我改變我的'計時器'到'2000'它使推... 在鈦的Doc這個通知的參數我得到此: 日期:日期 通知發生的日期和時間。 – DHennrich

+0

'var timer = Ti.App.Properties.getString('pushTime')'。 Javascript會自動將它轉換爲數字嗎? – borrrden

+0

對'Ti.API.info(定時器)是'它返回'2000'所以它是一個數字 – DHennrich

回答

1

DHennrich,Ti.API.info(timer)收益2000並不意味着2000是一個類型的號碼。實際上,這是一個字符串,因爲您使用setString方法來存儲值並使用getString()來檢索它。當您使用setString時,它將該值存儲爲字符串,並且getString始終返回字符串avlue。這就是爲什麼你的代碼在你使用2000而不是timer變量時工作的原因。

API Documentation

的getString(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');

我希望它能夠解決您的問題檢索值。

+0

Omg ...你是對的! 感謝您的幫助!真的 – DHennrich

+0

@Dennrich:不客氣:) – Anand