5

Tôi đang thực hiện một ứng dụng đang sử dụng thông báo đẩy, tôi hiện đang sử dụng pushbots cho các thông báo đẩy. Tôi đã tự hỏi nếu có bất kỳ cách nào để đánh chặn các thông báo nhận được bởi các ứng dụng và kiểm tra thông báo trước khi thông báo được hiển thị trên thiết bị. Và nếu dữ liệu trong thông báo không chính xác, bạn không hiển thị thông báo? Điều này có thể xảy ra với pushbot hay tôi có cần tự làm tất cả không?Thông báo đẩy đánh chặn iOS

+1

Tại sao thông báo "không chính xác"? Bạn kiểm soát thông báo đang được gửi đến thiết bị, không gửi thông báo xấu ... – Doc

+0

Chính xác có thể là từ sai, nhưng tôi muốn kiểm tra xem đó có phải là "người dùng" hoặc thiết bị chính xác hay không. Tôi không muốn tất cả các thiết bị với các ứng dụng để có được tất cả các notifcations. – Uffe

+1

Khi bạn gửi thông báo đẩy, bạn chỉ định mã thông báo thiết bị để xác định thiết bị nào sẽ gửi thông báo đến ... – Doc

Trả lời

2

Bạn không thể ngăn thông báo hiển thị khi nó đến thiết bị (giả sử nó chứa trường alert trong từ điển aps - nếu không, sẽ không có thông báo nào được hiển thị).

Bạn nên xác định trong máy chủ của mình thông báo nào sẽ được gửi đến các thẻ thiết bị nào. Bạn có thể liên kết mã thông báo thiết bị với người dùng trong DB của mình, nếu chức năng của bạn yêu cầu.

Ngay cả khi những gì bạn yêu cầu là có thể, sẽ rất không hiệu quả khi gửi thông báo tới tất cả các thiết bị đã cài đặt ứng dụng của bạn, và sau đó chỉ hiển thị thông báo trong một tập con nhỏ.

+0

Tôi quản lý để thực hiện điều này bằng cách sử dụng Bí danh thay thế, tương tự như mã thông báo thiết bị nhưng trên mỗi thiết bị bạn có thể đặt Bí danh cho người dùng đó. – Uffe

16

Có, bạn có thể đạt được hành vi này khi chơi với Thông báo địa phương.

Bạn có thể định cấu hình tải trọng của mình mà không cần alert"content-available": "1" để ứng dụng của bạn có thể nhận thông báo mà không hiển thị chúng cho người dùng.

// Payload 
{ 
    aps: { 
     "content-available": 1 
    }, 
    text: 'my alert message' // your custom info 
} 

Và trong mã ứng dụng của bạn, đăng ký thông báo như

// Register notifications 
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
UIRemoteNotificationTypeNewsstandContentAvailability]; 

Sau đó, chính là để kích hoạt Thông báo địa phương trong phương pháp application:didReceiveRemoteNotification:fetchCompletionHandler: dựa trên một số điều kiện

- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 

    NSLog(@"push data package: %@", userInfo); 

    // Retrieve your data   
    NSString *text = [userInfo objectForKey:@"text"]; 

    BOOL mustShow = YES; 
    // Only show notification if app is background and your custom condition 
    if ((state == UIApplicationStateInactive || state == UIApplicationStateBackground) 
     && mustShow) { 
     // Raise the local notification a second after received 
     UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 
     localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1]; 
     localNotification.alertBody = text; 
     localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
     localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 

     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
    } 
} 

Bằng cách này bạn có thể "chặn" các thông báo trước khi "hiển thị" chúng cho người dùng.

+0

nó phải được chấp nhận là câu trả lời đúng –

Các vấn đề liên quan