2015-09-29 19 views
22

Tôi nhận được thông báo đẩy tương tự hai lần trong iOS9, mặc dù nó hoạt động tốt trong iOS8.Nhận thông báo đẩy trùng lặp ios9

Tôi đã sử dụng đoạn mã sau để đăng ký với thông báo đẩy:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) 
{ 
    // use registerUserNotificationSettings 
    UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert|UIUserNotificationTypeBadge) categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:setting]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
} 
else 
{ 
    // use registerForRemoteNotifications 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeBadge)]; 
} 

#else 

// use registerForRemoteNotifications 
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

#endif 
+0

Bạn có đang chạy trên phiên bản beta của iOS 9 không? Đây là một lỗi đã biết trong đó. Đây là một chuỗi thảo luận diễn đàn của Apple -> https://forums.developer.apple.com/thread/13414 – Abhinav

+0

@Abhinav Tôi đang chạy trên iOS 9.0 và IOS 9.0.1. – iPhone

+0

Bạn đã từng giải quyết vấn đề này chưa? Tôi cũng gặp vấn đề này –

Trả lời

0

Tôi đang sử dụng này và điều này đang làm việc tốt trong Ios9 cũng có, vui lòng thử lại. Thêm này trong didFinishLaunchingWithOptions của bạn:

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)]; 
} 

Phương pháp gọi là

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{ 
    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
    self.AppDeviceToken=[token stringByReplacingOccurrencesOfString:@" " withString:@""]; 
} 
2

Từ iOS 9 mỗi lần bạn gỡ cài đặt và cài đặt lại ứng dụng lại, mã thông báo thiết bị mới đã gán điều này có thể là lý do bạn nhận được nhiều thông báo đẩy.

Thực ra tôi đã đọc từ một diễn đàn, họ cung cấp giải pháp khi bạn tạo tải trọng thêm một tùy chỉnh thêm bất kỳ giá trị ngẫu nhiên nào để mỗi trọng tải có một số giá trị duy nhất. trong trường hợp của tôi trong vb.net tôi đang sử dụng DateTime.Now.ToString ("MMddyyyyHHmmssfff") để thêm một dấu thời gian duy nhất với mili giây. Tôi hy vọng công việc của nó tôi thực hiện điều này nhưng không được thử nghiệm cho đến nay.

3

Tôi gặp sự cố này trong một số ứng dụng và có vẻ như các bản sao xuất hiện nếu bạn gọi registerUserNotificationSettings: nhiều hơn 1 lần.

Xem thêm chi tiết trong câu trả lời này: https://stackoverflow.com/a/35064911/4495995

0

Trước tiên kiểm tra cơ sở dữ liệu của bạn và chắc chắn rằng bạn đã không nhận được thiết bị Token hai lần, rất có thể bạn có mục trùng lặp của cùng một thẻ.

Thứ hai, nếu bạn cài đặt/gỡ cài đặt ứng dụng trong vòng 3 đến 4 ngày, bạn có thể nhận được thông báo hai lần hoặc thậm chí ba lần.

Giải pháp: Vui lòng gỡ cài đặt ứng dụng trong một tuần nếu có thể hơn là cài đặt lại ứng dụng.

Cảm ơn bạn.

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