Отображение CFUserNotificationDisplayAlert на экране блокировки iPhone - PullRequest
2 голосов
/ 04 февраля 2010

Я создаю приложение, которое должно отображать CFUserNotificationDisplayAlert, даже если экран iPhone заблокирован, в настоящее время я использую этот код

CFOptionFlags responseFlags = 0;
CFUserNotificationDisplayAlert(20.0, 3, NULL, NULL, NULL, CFSTR("Hello"), CFSTR("Hello World"), CFSTR("OK"), NULL, NULL, &responseFlags);

Это прекрасно работает на главном экране, но не появляется, если экран заблокирован. Что-нибудь еще, что я должен добавить к этому, чтобы это также появилось на экране блокировки?

Ответы [ 2 ]

4 голосов
/ 14 марта 2010

Вам нужно использовать клавишу kCFUserNotificationAlertTopMostKey.

extern CFStringRef kCFUserNotificationAlertTopMostKey;
CFStringRef keys[] = {
   kCFUserNotificationAlertTopMostKey,
   kCFUserNotificationAlertHeaderKey,
   kCFUserNotificationAlertMessageKey
};
CFStringRef values[] = {
   kCFBooleanTrue,
   CFSTR("Title"),
   CFSTR("Message")
};
CFDictionaryRef dict = CFDictionaryCreate(NULL, keys, values,     
                                          sizeof(keys)/sizeof(*keys),
                                          &kCFTypeDictionaryKeyCallBacks,
                                          &kCFTypeDictionaryValueCallBacks);
SInt32 err = 0;
CFUserNotificationRef notif = CFUserNotificationCreate(NULL,
          0, kCFUserNotificationPlainAlertLevel, &err, dict);
CFRelease(dict);
...

См. http://iphonedevwiki.net/index.php/CFUserNotification для всех ключей описания диалога для iPhone OS ≤ 3.1.

(Обратите внимание, что, хотя он будет отображаться на экране блокировки, телефон сам по себе не проснется.)

2 голосов
/ 08 марта 2010

CFUserNotification не поддерживается на iPhone OS. Push-уведомления эквивалентны iPhone.

...