Lúc đó mình thực sự đã lo lắng - nhận định kèo

/imgposts/c2j9n934.jpg

Tài liệu tích hợp SDK Xinge dành cho iOS thực sự không rõ ràng và thiếu sót, nhận định kèo khiến việc hiểu chi tiết các bước phải dựa vào mã nguồn demo (AppDelegate.m).

Nếu dùng tài khoản mặc định này sẽ xảy ra lỗi như sau:

2017-07-23 11:05:01.694235+0800 WeexDemo[5310:1996359] [Thông tin xgpush] Độ dài msgLen là 11
2017-07-23 11:05:01.694374+0800 WeexDemo[5310:1996359] [Cảnh báo xgpush!] Mã rspCode là 47
2017-07-23 11:05:01.694445+0800 WeexDemo[5310:1996161] [XGDemo] Lỗi đăng ký đẩy thông báo

Thực sự rất khó chịu vì mã lỗi 47 không được liệt kê trong tài liệu mã lỗi của Xinge! Giải pháp đơn giản chỉ cần thay đổi tài khoản thành một chuỗi khác, ví dụ:

NSString [xem kết quả tỷ số bóng đá](/blog/laravel-7-released-a-new-version-new-features-and-changes/)  *deviceTokenStr = [XGPush registerDevice:deviceToken account:@"sunzhongwei" successCallback:^{

Khi gửi vài tin nhắn thử từ giao diện quản trị web của Xinge, thiết bị không nhận được bất kỳ thông tỷ số trực tuyến bóng đá 7m.cn báo nào. Lúc đó mình thực sự đã lo lắng... Trong XCode không có chút thông tin gỡ lỗi nào liên quan. Nhớ lại thì dường như chưa xử lý logic khi nhận thông báo, nên đã copy đoạn mã sau từ demo:

// API mới thêm vào từ iOS 10
// iOS 10 sẽ gọi API mới này, còn phiên bản trước iOS 10 sẽ gọi API cũ
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
// Callback khi người dùng click vào thông báo
// Cả thông báo cục bộ lẫn từ xa đều sẽ đi qua callback này
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler {
  NSLog(@"[XGDemo] Click vào thông báo");
  [XGPush handleReceiveNotification:response.notification.request.content.userInfo
  successCallback:^{
     NSLog(@"[XGDemo] Xử lý nhận thành công");
   } errorCallback:^{
     NSLog(@"[XGDemo] Xử lý nhận lỗi");
   }];
  completionHandler();
}
// Gọi interface này để hiển thị thông báo khi app đang ở chế độ nền
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
  completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
}

Cuối cùng cũng có thể nhận được thông báo rồi!!!