Nhận thông báo đẩy trong khi Ứng dụng ở tiền cảnh iOS


189

Tôi đang sử dụng dịch vụ thông báo đẩy trong ứng dụng của mình. Khi ứng dụng ở chế độ nền, tôi có thể thấy thông báo trên màn hình thông báo (màn hình hiển thị khi chúng tôi vuốt xuống từ trên cùng của thiết bị iOS). Nhưng nếu ứng dụng nằm ở phía trước thì phương thức ủy nhiệm

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

đang được gọi nhưng thông báo không được hiển thị trong màn hình thông báo.

Tôi muốn hiển thị thông báo trên màn hình thông báo độc lập cho dù ứng dụng ở chế độ nền hay nền trước. Tôi mệt mỏi bằng cách tìm kiếm một giải pháp. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.


35
Apple nói : Nếu bạn nhận được thông báo cục bộ hoặc từ xa trong khi ứng dụng của bạn đang chạy ở nền trước, bạn có trách nhiệm truyền thông tin cho người dùng của mình theo cách cụ thể của ứng dụng.
Lauri Lehmijoki 18/03/2016

2
Một số liên kết táo cập nhật (oct "16): ở đây , ở đóở đó
azmeuk

1
không hỗ trợ tiền cảnh báo thông báo đẩy cho iOS 9.3 trở xuống?
Anurag Sharma

@Lauri Lehmijoki liên kết? Tôi đã không tìm thấy điều đó trên trang web chính thức
Vyachaslav Gerchicov

1
Tôi đang đối mặt với cùng một vấn đề trong ion ...
Nói Mohd Ali

Câu trả lời:


204

Để hiển thị thông báo biểu ngữ trong khi ứng dụng ở phía trước, hãy sử dụng phương pháp sau.

iOS 10, Swift 3/4 :

// This method will be called when app received push notifications in foreground
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 
{
    completionHandler([.alert, .badge, .sound])
}

iOS 10, Swift 2.3 :

@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
{
    //Handle the notification
    completionHandler(
       [UNNotificationPresentationOptions.Alert,
        UNNotificationPresentationOptions.Sound,
        UNNotificationPresentationOptions.Badge])
}

Bạn cũng phải đăng ký đại biểu ứng dụng của mình làm đại biểu cho trung tâm thông báo:

import UserNotifications

// snip!

class AppDelegate : UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate

// snip!

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

      // set the delegate in didFinishLaunchingWithOptions
      UNUserNotificationCenter.current().delegate = self
      ...
   }

Khi phương thức này được gọi là?
Uma Madhavi

Vui lòng hướng dẫn cho tôi Tôi đang hiển thị thông báo từ đầu khi nền ứng dụng của tôi hoặc tiền cảnh. 2 tuần tôi đang làm việc với thông báo đẩy. Tôi có thể nhận được tin nhắn từ máy chủ.
Uma Madhavi

@UmaMadhavi Bạn có thể nhận được thông báo đẩy không?
chengsam

21
Đừng quên đặt đại biểu Trung tâm thông báo làm đại biểu ứng dụng: UNUserNotificationsCenter.current().delegate = selftrong ứng dụng didFinishLaunchingWithOptions
Achintya Ashok

2
Đối với những người vẫn đang vật lộn, UNUserNotificationCenter của nó không phải UNUserNotifyingCenter với 's' trước trung tâm
Raj

58

Mã dưới đây sẽ làm việc cho bạn:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  {
    application.applicationIconBadgeNumber = 0;             
    //self.textView.text = [userInfo description];
    // We can determine whether an application is launched as a result of the user tapping the action
    // button or whether the notification was delivered to the already-running application by examining
    // the application state.

    if (application.applicationState == UIApplicationStateActive) {                
        // Nothing to do if applicationState is Inactive, the iOS already displayed an alert view.                
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Did receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];          
    }    
}

Những công việc này. Một chút thông tin về những gì nó làm; khi ứng dụng ở phía trước, một hộp cảnh báo UI gốc xuất hiện cùng với văn bản thông báo bên trong nó ( titlevăn bản được in đậm lớn hơn một chút và messagevăn bản nhỏ hơn bên dưới. Nút 'OK' để loại bỏ ở phía dưới). Tùy chọn applicationIconBadgeNumber được đặt thành 0 là để ẩn số xuất hiện trên đầu biểu tượng ứng dụng trong Springboard (ví dụ: biểu thị số lượng tin nhắn chưa đọc trong ứng dụng thư). Trong ví dụ này, tôi không biết liệu tùy chọn đó có cần thiết hay không.
jwinn

Điều này có hoạt động cho cả UNnotification và UILocalNotification không?
dùng6631314

38

Đối với bất kỳ ai có thể quan tâm, cuối cùng tôi đã tạo một chế độ xem tùy chỉnh trông giống như biểu ngữ đẩy hệ thống ở trên cùng nhưng thêm nút đóng (nhỏ màu xanh X) và một tùy chọn để nhấn vào thông báo cho hành động tùy chỉnh. Nó cũng hỗ trợ trường hợp có nhiều hơn một thông báo được gửi đến trước khi người dùng có thời gian đọc / loại bỏ những thông báo cũ (Không giới hạn số lượng có thể chồng chất ...)

Liên kết với GitHub: AGPushNote

Việc sử dụng về cơ bản là trên lớp lót:

[AGPushNoteView showWithNotificationMessage:@"John Doe sent you a message!"];

Và có vẻ như thế này trên iOS7 (iOS6 có giao diện iOS6 ...)

nhập mô tả hình ảnh ở đây


1
Hiện tại cũng được giới thiệu lại trong Swift: github.com/charliewilliams/CWNotificationBanner (bởi tôi)
xây dựng vào

Đẹp, điều này sẽ hữu ích.
无 夜 之

36

Mục tiêu C

nhập mô tả hình ảnh ở đây

Đối với iOS 10chúng tôi cần willPresentNotificationphương pháp tích hợp để hiển thị biểu ngữ thông báo trong foreground.

Nếu ứng dụng ở chế độ nền trước (hoạt động)

- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
    NSLog( @“Here handle push notification in foreground" ); 
    //For notification Banner - when app in foreground

    completionHandler(UNNotificationPresentationOptionAlert);

    // Print Notification info
    NSLog(@"Userinfo %@",notification.request.content.userInfo);
}

1
Chỉ cần sao chép mã và đừng quên sử dụng giao thức UNUserNotificationCenterDelegate.
Nik Kov

Nếu tôi muốn hiển thị một cảnh báo thay vì thông báo này thì sao?
Mihir Oza

@MihirOza Bạn muốn UIAlertControll?
Ashwini Chougale

Tôi biết nhưng tôi không muốn thông báo bật lên khi ứng dụng được kích hoạt. Tôi chỉ muốn cảnh báo trong ứng dụng của tôi.
Mihir Oza

24

Nếu ứng dụng đang chạy ở nền trước, iOS sẽ không hiển thị biểu ngữ / cảnh báo thông báo. Đó là do thiết kế. Nhưng chúng ta có thể đạt được nó bằng cách sử dụng UILocalNotificationnhư sau

  • Kiểm tra xem ứng dụng có ở trạng thái hoạt động hay không khi nhận được
    thông báo từ xa . Nếu ở trạng thái hoạt động, bắn UILocalNotification.

    if (application.applicationState == UIApplicationStateActive ) {
    
        UILocalNotification *localNotification = [[UILocalNotification alloc] init];
        localNotification.userInfo = userInfo;
        localNotification.soundName = UILocalNotificationDefaultSoundName;
        localNotification.alertBody = message;
        localNotification.fireDate = [NSDate date];
        [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    }

NHANH:

if application.applicationState == .active {
    var localNotification = UILocalNotification()
    localNotification.userInfo = userInfo
    localNotification.soundName = UILocalNotificationDefaultSoundName
    localNotification.alertBody = message
    localNotification.fireDate = Date()
    UIApplication.shared.scheduleLocalNotification(localNotification)
}

86
Tôi không nghĩ rằng điều này sẽ giúp. Thông báo cục bộ và từ xa được xử lý như nhau và kết quả là khi thông báo cục bộ này tắt và nếu ứng dụng đang chạy thì huy hiệu / biểu ngữ hoặc âm thanh sẽ không được hiển thị / phát.
RPM

3
Nó cũng sẽ để lại một mục trong Trung tâm thông báo iOS
Ab'initio

3
Tuy nhiên tôi sẽ không khởi chạy một thông báo địa phương khi có thông báo đẩy. Tôi sẽ khởi chạy một hành vi tương tự thay vì như @ Rick77 đã đề cập: hiển thị cảnh báo hoặc một số máy nướng bánh mì. Tôi đoán tôi không phải thông qua hệ điều hành một lần nữa vì điều gì đó mà hệ điều hành đang yêu cầu tôi xử lý.
Fábio Oliveira

3
Giải pháp này đang hoạt động, vì cục bộ và từ xa được xử lý theo cùng một cách, khi ứng dụng ở phía trước, tạo thông báo vị trí khi có thông báo từ xa sẽ không hiển thị bất kỳ điều gì. Sử dụng cảnh báo hoặc cảnh báo tùy chỉnh là giải pháp
Búa

18
Điều này không thực sự hoạt động. Từ các tài liệu UILocalNotification:If the app is foremost and visible when the system delivers the notification, the app delegate’s application:didReceiveLocalNotification: is called to process the notification. Use the information in the provided UILocalNotification object to decide what action to take. The system does not display any alerts, badge the app’s icon, or play any sounds when the app is already frontmost.
Chris Morse

15

Nếu ứng dụng đang chạy ở nền trước, iOS sẽ không hiển thị biểu ngữ / cảnh báo thông báo. Đó là do thiết kế. Bạn phải viết một số mã để xử lý tình huống ứng dụng của bạn nhận được thông báo trong khi nó ở phía trước. Bạn nên hiển thị thông báo theo cách thích hợp nhất (ví dụ: thêm số huy hiệu vào UITabBarbiểu tượng, mô phỏng biểu ngữ Trung tâm thông báo, v.v.).


1
nhưng trong ứng dụng thư iOS họ đã thực hiện xong, bạn sẽ nhận được biểu ngữ / cảnh báo thông báo mới trong khi ứng dụng thư ở phía trước
Ab'initio

3
@ Ab'initio Tôi không biết chắc chắn, nhưng trong iOS, tất cả các ứng dụng không được tạo như nhau. Tôi cho rằng ứng dụng Mail stock đang sử dụng một số loại API riêng không có sẵn trong SDK công khai. Hoặc có thể mã thông báo đang tạo ngoại lệ với id ứng dụng Mail của Apple.
Daniel Martín

1
Gì?? Tôi sắp có một cuộc tấn công cơn thịnh nộ.
Josh

@ DanielMartín bạn có thể cho tôi biết làm thế nào tôi sẽ nhận được thông báo ở trạng thái tiền cảnh trong iOS 8.0
Dilip Tiwari

9
Hãy nhớ rằng câu trả lời này chỉ đúng với iOS 9 trở xuống . Kể từ iOS 10, Apple đã giới thiệu API mới để xử lý thông báo ( UNUserNotificationCenter API). Cùng với API mới, giờ đây có thể hiển thị các thông báo nếu ứng dụng nằm ở phía trước. Vì vậy, nếu bạn bối rối vì các câu trả lời khác nhau trong câu hỏi này, đó là do một số câu trả lời quá cũ và chỉ mô tả hành vi cho iOS 9 trở về trước, trong khi những câu trả lời khác không tính đến UNUserNotificationCenter là chỉ có sẵn từ iOS 10.
tomacco

12

Xcode 10 Swift 4.2

Để hiển thị Thông báo đẩy khi ứng dụng của bạn ở phía trước -

Bước 1: thêm đại biểu UNUserNotificationCenterDelegate trong lớp AppDelegate.

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

Bước 2: Đặt đại biểu UNUserNotificationCenter

let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.delegate = self

Bước 3: Bước này sẽ cho phép ứng dụng của bạn hiển thị Thông báo đẩy ngay cả khi ứng dụng của bạn ở phía trước

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .sound])

    }

Bước 4: Bước này là tùy chọn . Kiểm tra xem ứng dụng của bạn có ở nền trước không và nếu ứng dụng đó ở nền trước thì hiển thị PushNotification cục bộ.

func application(_ application: UIApplication,didReceiveRemoteNotification userInfo: [AnyHashable: Any],fetchCompletionHandler completionHandler:@escaping (UIBackgroundFetchResult) -> Void) {

        let state : UIApplicationState = application.applicationState
        if (state == .inactive || state == .background) {
            // go to screen relevant to Notification content
            print("background")
        } else {
            // App is in UIApplicationStateActive (running in foreground)
            print("foreground")
            showLocalNotification()
        }
    }

Chức năng thông báo cục bộ -

fileprivate func showLocalNotification() {

        //creating the notification content
        let content = UNMutableNotificationContent()

        //adding title, subtitle, body and badge
        content.title = "App Update"
        //content.subtitle = "local notification"
        content.body = "New version of app update is available."
        //content.badge = 1
        content.sound = UNNotificationSound.default()

        //getting the notification trigger
        //it will be called after 5 seconds
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)

        //getting the notification request
        let request = UNNotificationRequest(identifier: "SimplifiedIOSNotification", content: content, trigger: trigger)

        //adding the notification to notification center
        notificationCenter.add(request, withCompletionHandler: nil)
    }

1
Đây là một ví dụ tuyệt vời về sự cần thiết phải đọc tất cả các câu trả lời cho một chủ đề. Chủ đề trước đó đề cập đến phương pháp, hơn đại biểu và cuối cùng là một trong ba bước bạn cần thực hiện. THANK YOU Prashant cho một câu trả lời đầy đủ!
dùng3069232

Thật tốt khi biết rằng nó đã giúp bạn. Chúc mừng mã hóa
Prashant Gaikwad

10

Theo tài liệu của apple , Có, bạn có thể hiển thị thông báo trong khi ứng dụng đang chạynhập mô tả hình ảnh ở đây


Tôi có thể viết chức năng đó ở đâu trong đại biểu ứng dụng hoặc trong một lớp cụ thể ??
Nhà phát triển iOS

Điều gì nếu tôi muốn viết rằng methd trong chế độ xem đã tải ??
Nhà phát triển iOS

bạn có thể viết bất cứ nơi nào nhưng điều kiện là nó phải phù hợp với UNUserNotificationCenterDelegategiao thức
SPatel

bạn không thể viết trongviewDidLoad
SPatel

1
tôi đề nghị bạn gia hạn AppDelegateextension AppDelegate: UNUserNotificationCenterDelegate
SPatel

9

Bạn có thể tạo thông báo của riêng mình bắt chước cảnh báo biểu ngữ.

Một cách là tạo ra một uiview tùy chỉnh trông giống như biểu ngữ và có thể hoạt hình và phản hồi khi chạm vào. Với suy nghĩ này, bạn có thể tạo các biểu ngữ thậm chí còn tốt hơn với nhiều chức năng hơn.

Hoặc bạn có thể tìm kiếm một api làm điều đó cho bạn và thêm chúng dưới dạng podfiles vào dự án của bạn.

Dưới đây là một cặp vợ chồng mà tôi đã sử dụng:

https://github.com/terryworona/TWMessageBarManager

https://github.com/toursprung/TSMessages


1
Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi.
Robert

1
TWMessageBarManagercó thể dễ dàng được gọi và sử dụng thông qua appdelegate vì nó sử dụng mẫu thiết kế singleton. Cảm ơn các liên kết.
Jay Mayu

8

Đây là mã để nhận Thông báo đẩy khi ứng dụng ở trạng thái hoạt động (nền trước hoặc mở). Tài liệu UNUserNotificationCenter

@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
{
     completionHandler([UNNotificationPresentationOptions.Alert,UNNotificationPresentationOptions.Sound,UNNotificationPresentationOptions.Badge])
}

Nếu bạn cần truy cập userInfo của thông báo sử dụng mã: notification.request.content.userInfo


Nơi để viết chức năng này trong chế độ xem đã tải? hoặc trong lớp điều khiển xem?
Nhà phát triển iOS

Điều gì xảy ra nếu tôi có thể gọi nó trong một chức năng như là một chức năng lồng nhau thì nó sẽ được gọi là> ??
Nhà phát triển iOS

1
đặt cái này trong lớp AppDelegate. Bạn không phải gọi chức năng này.
Milan Jayawardane

4

Việc thêm dòng xongHandler vào phương thức ủy nhiệm đã giải quyết cùng một vấn đề cho tôi:

//Called when a notification is delivered to a foreground app.
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

completionHandler([.alert, .badge, .sound])
} 

3

Đối với swift 5 để phân tích từ điển PushNotification

    func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any]) {
            if application.applicationState == .active {
                if let aps1 = data["aps"] as? NSDictionary {
                    if let dict = aps1["alert"] as? NSDictionary {
                        if let strTitle = dict["title"] as? String , let strBody = dict["body"] as? String {
                            if let topVC = UIApplication.getTopViewController() {
                                //Apply your own logic as per requirement
                                print("strTitle ::\(strTitle) , strBody :: \(strBody)")
                            }
                        }
                    }
                }
            }
        }

Để tìm nạp top viewContoder mà chúng tôi hiển thị topBanner

extension UIApplication {

    class func getTopViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {

        if let nav = base as? UINavigationController {
            return getTopViewController(base: nav.visibleViewController)

        } else if let tab = base as? UITabBarController, let selected = tab.selectedViewController {
            return getTopViewController(base: selected)

        } else if let presented = base?.presentedViewController {
            return getTopViewController(base: presented)
        }
        return base
    }
}

Các guardtuyên bố là bạn của bạn :-)
Nicolas Miari

2

Trong ứng dụng của bạn, đại biểu sử dụng mã dưới đây

import UIKit
import UserNotifications
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
 var currentToken: String?
 var window: UIWindow?
 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        application.registerForRemoteNotifications()
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in

            // Enable or disable features based on authorization.
            if granted == true
            {
                print("Allow")
                UIApplication.shared.registerForRemoteNotifications()
            }
            else
            {
                print("Don't Allow")
            }
        }
        UNUserNotificationCenter.current().delegate = self

        return true
    }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){
        let tokenParts = deviceToken.map { data -> String in
            return String(format: "%02.2hhx", data)
        }
        let token = tokenParts.joined()
        currentToken = token  //get device token to delegate variable

    }
 public class var shared: AppDelegate {
        return UIApplication.shared.delegate as! AppDelegate
    }
 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
         completionHandler([.alert, .badge, .sound])
    }
}

0

Như đã đề cập ở trên, bạn nên sử dụng UserNotification.frameworkđể đạt được điều này. Nhưng vì mục đích của tôi, dù sao tôi cũng phải thể hiện nó trong ứng dụng và muốn có iOS 11phong cách, vì vậy tôi đã tạo một chế độ xem trợ giúp nhỏ, có thể sẽ hữu ích cho ai đó.

Chế độ xem thông báo đẩy GitHub iOS 11 .


0

Cách tiếp cận tốt nhất cho việc này là thêm UNUserNotificationCenterDelegatevào AppDelegatebằng cách sử dụng extension AppDelegate: UNUserNotificationCenterDelegate Tiện ích mở rộng đó cho biết ứng dụng có thể nhận thông báo khi sử dụng

Và thực hiện phương pháp này

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(.alert)
    }

Phương pháp này sẽ được kêu gọi các đại biểu chỉ nếu ứng dụng đang trong Foreground .

Vì vậy, việc thực hiện cuối cùng:

extension AppDelegate: UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(.alert)
    }
}

Và để gọi điều này, bạn phải đặt đại biểu trong AppDelegate để didFinishLaunchingWithOptionsthêm dòng này

UNUserNotificationCenter.current().delegate = self

Bạn có thể sửa đổi

completionHandler(.alert) 

với

completionHandler([.alert, .badge, .sound]))

0

Dành cho Swift 5

1) Xác nhận đại biểu cho AppDelegate với UNUserNotificationCenterDelegate

2) UNUserNotificationCenter.current().delegate = selftrongdidFinishLaunch

3) Thực hiện các phương pháp dưới đây trong AppDelegate.

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
     print("Push notification received in foreground.")
     completionHandler([.alert, .sound, .badge])
}

Đó là nó!


-2

Như @Danial Martine cho biết iOS sẽ không hiển thị biểu ngữ / cảnh báo. Đó là do thiết kế. Nhưng nếu thực sự phải làm điều đó thì có một cách. Tôi cũng đã đạt được điều này bằng cách tương tự.

1. Tải xuống khung phân tích công việc từ Parse FrameWork

2. Nhập khẩu #import <Parse/Parse.h>

3.Thêm mã sau vào Phương thức didReceiveRemoteNotification của bạn

 - (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [PFPush handlePush:userInfo];
}

PFPush sẽ chăm sóc cách xử lý thông báo từ xa. Nếu Ứng dụng ở phía trước, điều này sẽ hiển thị cảnh báo nếu không nó sẽ hiển thị thông báo ở trên cùng.


cảnh báo? bạn có nghĩa là một quan điểm cảnh báo?
iphondroid

1
nhưng làm thế nào để gọi lại cho các hành động của nút cảnh báo
Charlie

-2

Nếu ứng dụng của bạn ở trạng thái nền trước, điều đó có nghĩa là bạn hiện đang sử dụng cùng một ứng dụng. Vì vậy, không cần phải hiển thị thông báo trên đầu nói chung.

Nhưng nếu bạn muốn hiển thị thông báo trong trường hợp đó, bạn phải tạo Chế độ xem cảnh báo tùy chỉnh hoặc Chế độ xem tùy chỉnh như Toast hoặc một cái gì đó khác để hiển thị cho người dùng rằng bạn đã nhận được thông báo.

Bạn cũng có thể hiển thị một huy hiệu trên đầu nếu bạn có loại tính năng như vậy trong ứng dụng của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.