Ghi chép thực tế ⑦: Hồi sinh ứng dụng iOS đã ngừng hoạt động bằng AI

Tình huống triển khai AI

Ứng dụng iOS của cùng dịch vụ này là mặt trận chính, nơi chiếm đa số hội viên. Vậy mà thông báo ở đây còn im lặng hơn cả Android — tuyến thông báo thế hệ cũ đã bị cắt đứt hoàn toàn. Tiếp nối Ghi chép thực tế ⑥ (phần Android), lần này chúng tôi tổng hợp những điểm tắc đặc thù của iOS cùng câu chuyện chung cho cả hai hệ điều hành: hiện đại hóa thông báo mà không động vào máy chủ cũ.

Nền tảng càng nhiều người dùng thì sự im lặng của thông báo càng lặng lẽ nới rộng thiệt hại.
Chính “sự cố không ai nhận ra” mới là thứ đáng dập tắt trước tiên.

Phần lớn người dùng ở trên iOS. Và trên iOS, thông báo đã chết.

Giống Android, ứng dụng iOS cũng là lớp vỏ native hiển thị dịch vụ web sẵn có — một lớp bọc WebView cộng với thông báo. Việc gửi phụ thuộc vào cơ chế thế hệ cũ, và phân phối dừng lại ngay khi tuyến đường đó không dùng được nữa. Vì đa số người dùng ở phía này nên phạm vi ảnh hưởng là lớn nhất. Chuyển chỗ này sang nền tảng phân phối hiện đại chính là lợi ích lớn nhất của lần này.

khoảng 10.800thiết bị iOS (đa số toàn bộ)
khoảng 14.000thiết bị đã đăng ký (toàn bộ)
0 yênchi phí thay máy chủ

Các điểm tắc của iOS đều là những thứ chỉ lộ ra trên máy thật.

Với iOS, vấn đề chủ yếu là những thứ mà máy ảo hay việc rà soát mã không nhìn ra, chỉ khi lên máy thật mới bộc lộ.

Tuyến thông báo thế hệ cũ đã đứt hoàn toànĐường truyềnPhương thức thông báo cũ đã ngừng cung cấp, không còn cách nào để gửi. Chúng tôi lấy nền tảng phân phối hiện hành (FCM) làm trục và đăng ký lại khóa xác thực phía Apple theo phương thức mới, nhờ đó khôi phục được.
Tiếng Nhật trong WebView biến thành “đậu phụ”Ứng dụngMột triệu chứng riêng của máy thật: do độ tương thích của thiết lập phông chữ mặc định, tiếng Nhật biến thành một dãy ô vuông □. Chúng tôi giữ nguyên diện mạo sẵn có cho chữ Latinh và chèn thêm chỉ định phông bảo đảm riêng tiếng Nhật hiển thị đúng, nhờ đó xử lý xong.
Khác thế hệ hệ điều hành thì cách viết huy hiệu thông báo và hiển thị web cũng khácỨng dụngTrên iOS mới, cách viết phần cập nhật huy hiệu và thiết lập cấp quyền cho WebView đã thay đổi. Chúng tôi rẽ nhánh theo từng thế hệ để máy cũ và máy mới đều có cùng một trải nghiệm.
Chỉ riêng kết nối dùng để kiểm thử là bị thiết lập bảo mật chặnĐường truyềniOS mặc định cấm kết nối không mã hóa. Chúng tôi giữ môi trường vận hành chỉ dùng kết nối mã hóa, chỉ đặt ngoại lệ giới hạn cho môi trường kiểm thử, rồi gỡ ngoại lệ đó ở bản phát hành để trở về phía an toàn.

Lớp vỏ dựng lại bằng Swift, nội dung và hội viên giữ nguyên.

Ứng dụng iOS được tác nhân AI dựng lại trên cấu trúc native mới nhất (Swift + WKWebView + nền tảng thông báo hiện hành). Chúng tôi chạy từ khâu sinh khung dự án đến khâu kiểm tra trên máy thật, xác nhận hoạt động bằng bản build máy thật từ máy Mac. Nội dung đang hiển thị (dịch vụ web sẵn có) và tài sản hội viên là khoảng 14.000 thiết bị đã đăng ký đều được kế thừa nguyên vẹn.

Hạng mụcTrước đâySau khi dựng lại
Tuyến thông báoPhương thức thông báo thế hệ cũ
(đã ngừng cung cấp – không gửi được)
Nền tảng phân phối hiện hành + khóa xác thực phương thức mới
Lớp vỏ ứng dụngBản cài đặt native thế hệ cũTạo lại bằng Swift + WKWebView
Màn hình (nội dung)Hiển thị dịch vụ web sẵn cóGiữ nguyên (bảo toàn tài sản hội viên)
Lỗi trên máy thậtTiếng Nhật bị lỗi hiển thị v.v.Xử lý riêng từng vấn đề phông chữ, huy hiệu, khác biệt thế hệ

Máy chủ cũ được hiện đại hóa mà không cần thay thế.

Mấu chốt chung cho cả hai hệ điều hành nằm ở máy chủ phía gửi. Máy chủ này chạy trên một môi trường thực thi rất cũ nên công cụ chính thức hiện hành không dùng được ngay. Vì vậy chúng tôi tự cài đặt phần xử lý chữ ký cần cho xác thực rồi kết nối tới nền tảng phân phối hiện hành. Không thay cả máy chủ, chúng tôi chỉ chuyển riêng thông báo sang phương thức hiện đại.

Ngoài ra, phía gửi cũng được tách khỏi nền tảng dùng chung và dựng lại thành một dịch vụ phân phối độc lập, cho phép chọn đối tượng và gửi ngay từ màn hình quản trị.

Trước khi gửi đồng loạt tới 14.000 máy, hãy gửi cho 1 máy trước.Thông báo đã gửi đi thì không lấy lại được. Vì vậy chúng tôi cài sẵn cơ chế an toàn “chỉ gửi được tới thiết bị đã cho phép”, và trong quá trình kiểm thử bắt đầu từ trạng thái chỉ đúng một máy của mình nhận được. Việc gửi cho toàn bộ thiết bị chỉ được mở khóa sau khi tuyến đường và nội dung đã được kiểm tra kỹ trên máy thật — triệt tiêu rủi ro gửi nhầm ngay từ thiết kế là ưu tiên cao nhất của chúng tôi.

Ngay cả ứng dụng di động bị coi là “không chạy được” cũng có thể quay lại vận hành hiện hành chỉ với một lần dựng lại duy nhất: dựng lại lớp vỏ, kế thừa khóa và tài sản hội viên, hiện đại hóa máy chủ cũ. Nếu bạn có một ứng dụng đã bỏ cuộc vì nghĩ không thể động vào, hãy bắt đầu bằng việc trao đổi để phân tích hiện vật.

* Bài viết dựa trên một dự án có thật, được khái quát hóa trong phạm vi không thể nhận diện doanh nghiệp hay dịch vụ. Các con số là số xấp xỉ theo đo đạc tại thời điểm tháng 8 năm 2026. Thời gian và khối lượng công việc thay đổi tùy theo cấu trúc ứng dụng.

Thẻ:

🌐 Tiếng Việt