我有我的收藏的應用程序反應,在接受localNotifications我的分機代表的WatchOS 2 - 呈現另一WKAlertAction而現有仍被顯示
- (void)didReceiveLocalNotification:(UILocalNotification *)notification
如下
WKAlertAction *okAction = [WKAlertAction actionWithTitle:@"OK" style:WKAlertActionStyleCancel handler:^(void) {
DbgLog(@"Dismissed notification alert ");
}];
NSArray *alertActions = @[okAction];
assert(extension.rootInterfaceController);
[extension.rootInterfaceController presentAlertControllerWithTitle:notification.alertTitle message:notification.alertBody preferredStyle:WKAlertControllerStyleAlert actions:alertActions];
其中一期工程。如果手錶應用程序處於焦點狀態,則從我的應用程序觸發的本地通知會顯示在手錶上,就像在iPhone應用程序處於焦點時它們在iPhone上的操作方式一樣。如果手錶應用程序未對焦或其屏幕當前未通電,則回退到系統通知處理。
問題是這些本地通知可能會以相對較快的速度出現。當他們這樣做,相同的代碼被調用,並沒有任何提交..你不能提出另一個警報控制器的當前之一,並不是說我想,但我不認爲你可以解僱當前的警報,然後才能提出新的。
在iOS上也有類似的問題,但你可以通過使用正確的視圖控制器來呈現這樣
- (UIViewController *)myVisibleViewController
{
if ([self isKindOfClass:[UINavigationController class]])
{
return [[(UINavigationController*)self topViewController] myVisibleViewController];
}
if ([self isKindOfClass:[UITabBarController class]])
{
return [[(UITabBarController *)self selectedViewController] myVisibleViewController];
}
if (self.presentedViewController == nil || self.presentedViewController.isBeingDismissed)
{
return self;
}
return [self.presentedViewController myVisibleViewController];
}
WatchOS使用的東西在新的但似乎並沒有提供這樣的能力避開他們。這意味着我的應用無法真正處理通知,以及我想要的。如果有什麼,我寧願總是讓系統處理通知的方式,當應用程序沒有對焦或手錶屏幕關閉時。但我不認爲在應用程序處於焦點時,您可以獲得這種行爲。
說實話,即使系統通知我發現一個小片狀,如果很多通知一次到達,我不認爲系統處理它很好,它往往是我會錯過一些通知的原因隱藏在其他人身後並且不適合向用戶展示,我希望Apple在後續的WatchOS版本中修復這些內容。
任何人有任何想法,或者它是不可能有一個WatchOS 2應用程序處理通知在演示時間重疊?
乾杯!
感謝您的回答。也許我漫不經心就把這個問題弄糊塗了。我的應用程序主要運行在我的iPhone上,手錶僅僅是一個窗口,顯示手機上發生的事情。雖然我的應用程序在電話上運行,但它會不時生成本地通知,有時會連續發生。在手錶上,我試圖做你描述的內容,並讓用戶意識到通知。正如您在運行時所說的那樣,系統通知處理沒有完成,您的應用程序只會得到通知。在這個通知處理中,我提出警報。 – jimbobuk
如果兩個通知在相似的時間到達,那麼當試圖顯示第二個通知的警報時,它只會失敗,從而使用戶不知道第二個通知已到達。我沒有看到解決方案,因爲無法在iOS中級聯警報 – jimbobuk
我注意到文檔說只有一個警報可以隨時顯示,如果第二個警報顯示第一個應該被解僱辦法。這似乎沒有發生,所以也許我會記錄一個雷達 – jimbobuk