2014-02-07 93 views
4

我正在向當前項目添加本地通知,並且發現了一些奇怪的事情。我正在做的是在硬件電池電量不足時顯示警告。當應用程序處於前臺(並且我用警報視圖替換通知)時,字符串顯示正常。但是,當應用程序在後臺時,我的百分點符號消失。iOS UiLocalNotification格式化

@"%@ has less than %i%% battery left!" 

是我正在使用的字符串。在警報視圖中,它會顯示「X電池剩餘電量少於10%!」但是後臺通知顯示「X剩餘電量不足10b!」

有沒有人遇到過嗎?

編輯(添加的代碼片段)

UILocalNotification *lc = [[UILocalNotification alloc] init]; 
lc.fireDate = [[NSDate alloc]init]; 
lc.alertBody = [NSString stringWithFormat:@"%@ has less than %i%% battery left!", name, percentage]; 

lc.timeZone = [NSTimeZone defaultTimeZone]; 
lc.applicationIconBadgeNumber = lc.applicationIconBadgeNumber + 1; 

[[UIApplication sharedApplication] scheduleLocalNotification:lc]; 

name是一個的NSString和百分比是一個int

+0

你可以請顯示你的代碼設置通知 – freelancer

+0

@freenalcer我發佈了代碼段 – Pinsickle

回答

2

我在模擬器再現的問題也還我固定的問題。

用途:

@"%@ has less than %i %%%% battery left!" 

[NSString stringWithFormat:@"%@ has less than %i %@ battery left!",@"Your App",7,@"%%"] 

相反的:

@"%@ has less than %i%% battery left!" 
+1

但你爲什麼需要使用4時間模塊? – freelancer

+0

這是在文檔中:https://developer.apple.com/library/ios/documentation/iphone/Reference/UILocalNotification_Class/Reference/Reference.html @freenalcer - 你必須使用4個百分號的原因是因爲你用2個百分點代替1,但是你必須通過轉義每個百分號正確地設置替換字符串的格式。 – igz

5

我發現使用Unicode字符等同於將使其在這兩個警報工作查看和通知。我將我的字符串更改爲:

@"%@ has less than %i\uFF05 battery left!" 

但是,我仍然想知道爲什麼轉義對本地通知不起作用。