2016-02-22 29 views
5

我已經添加了一個本地通知,所以當我的應用程序在打開時仍然會彈出一個聲音並進行推送。 它在Android上工作正常,但在iOS上本地通知並未出現。codename一個本地通知不工作在ios

推送通知在兩個平臺上都正常工作。

這是我在推回調應該觸發通知(如果應用程序是打開的)代碼:

if(Display.getInstance().getCurrent() != null) { 
    LocalNotification n = new LocalNotification(); 
    n.setId(value); 
    n.setAlertBody(value); 
    n.setAlertTitle({app name}); 
    n.setBadgeNumber(1); 
    Display.getInstance().scheduleLocalNotification(n, System.currentTimeMillis() + 1000, LocalNotification.REPEAT_NONE); 
} 

回答

3

本地的通知當應用程序在前臺打開時不要觸發。您應該使用不同的機制在應用程序運行時發出聲音。例如Display.vibrate()

+0

好的,我會用這個和一個吐司來顯示消息,謝謝! – peopletookallthegoodnames

0

你叫registerUserNotificationSettings註冊該應用程序使用本地通知的事實呢?如果您不這樣做,您發送本地通知的請求將被忽略。

從該方法的說明,請參見本文:

如果您的應用程序顯示提醒,播放聲音,或徽章的圖標,你必須 打電話給你的啓動週期中這種方法來請求允許 警報用戶以這些方式。 (如果 想要直接設置applicationIconBadgeNumber屬性,則還必須提出此請求。) 通常,如果您的應用程序使用本地或遠程 通知來提醒用戶涉及您的應用程序的新信息,則發出此請求。 您的應用第一次啓動並調用此方法時,系統 詢問用戶是否應允許您的應用傳遞 通知並存儲響應。之後,系統使用存儲的響應來確定您可能使用的實際通知類型。

調用此方法後,應用程序會調用 應用程序:didRegisterUserNotificationSettings:其應用程序 的方法來報告結果。如果您的請求被用戶授予或拒絕,您可以使用該方法確定 。

建議您在安排任何 本地通知或向推送通知服務註冊之前調用此方法。 使用新的用戶設置對象調用此方法取代了以前的設置請求 。支持自定義操作的應用程序必須在通知設置 對象中包含其所有支持的操作。

+0

使用Codename一個你通常不能直接訪問本地平臺代碼(這是一個跨平臺的框架)。 – peopletookallthegoodnames

+0

對不起,我錯過了你的部分問題。我不知道如何從Codename One正確設置本地通知。我建議使用Google搜索「Codename One registerUserNotificationSettings」並查看是否有解決方案。 –

0

需要在AppDelegate.m文件的didFinishLaunchingWithOptions方法中添加以下代碼寄存器本地通知

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
     if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) 
     { 
      [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
      [[UIApplication sharedApplication] registerForRemoteNotifications]; 
     } 
     else 
     { 
      [[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
      (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; 
     } 
} 
1
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo 
{ 

[[NSNotificationCenter defaultCenter] postNotificationName:@"DriverNotification" object:nil userInfo:userInfo]; 
// [[NSNotificationCenter defaultCenter] postNotificationName:@"UserNotification" object:nil userInfo:userInfo]; 
     NSLog(@"%@",userInfo); 
} 

將此代碼放在您的視圖控制器

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"DriverNotification" object:nil 
];