Telegram cho iOS 13.1.1, dựa trên mã nguồn mở, đã ngừng gửi thông báo đã đọc cho người lạ nhắn tin trước. Chừng nào bảng điều khiển với các nút "Báo cáo spam" và "Chặn" còn hiển thị phía trên cuộc trò chuyện, ứng dụng sẽ không đánh dấu tin nhắn của người đó là đã đọc, không hiển thị các nút của họ, mở các liên kết của họ dưới dạng văn bản thuần túy và ẩn trạng thái biểu tượng cảm xúc của họ. Chế độ này sẽ bị tắt khi bạn loại bỏ bảng điều khiển, và khi bạn trả lời, nó sẽ bị tắt cục bộ, mặc dù các tác giả của thay đổi này tự lưu ý rằng máy chủ có thể khôi phục nó. Thay đổi này nằm trong kho lưu trữ Telegram-iOS với commit 007fb3f1 từ ngày 22 tháng 10, nó đã được đưa vào thẻ release-13.1.1, và phiên bản này đã được phát hành trên App Store vào tối cùng ngày. Điều này ảnh hưởng đến tất cả những người nhận tin nhắn từ người lạ, và những người nhắn tin trước: nếu bạn nhắn tin cho một người dùng iPhone, hai dấu tích sẽ chỉ xuất hiện sau khi họ quyết định phải làm gì với bạn.

Điều gì được ứng dụng coi là người trò chuyện đáng ngờ

Khi một người không có trong danh bạ nhắn tin trước, máy chủ sẽ gửi cho ứng dụng cài đặt của cuộc trò chuyện đó, peerSettings trong sơ đồ API. Trong số các cờ ở đó có report_spam và block_contact: liệu có hiển thị các nút "Báo cáo spam" và "Chặn" hay không. Không có cờ "đáng ngờ" riêng biệt trong sơ đồ. Trong mã của Telegram cho iOS, một cuộc trò chuyện được coi là đáng ngờ chừng nào ít nhất một trong hai cờ này được đặt, đây chính là vị ngữ isSuspiciousPeer. Các cài đặt tương tự cũng mang theo quốc gia của số điện thoại, tháng đăng ký và ngày thay đổi tên và ảnh, những thông tin này sẽ được hiển thị trong thẻ thông tin của người lạ phía trên tin nhắn đầu tiên từ tháng 3 năm 2025.

Trước phiên bản 13.1.1, sự đáng ngờ thay đổi không nhiều: trong văn bản của người trò chuyện như vậy, các liên kết, đề cập, hashtag, địa chỉ email, số thẻ và địa chỉ TON được hiển thị dưới dạng văn bản thuần túy, không thể nhấp vào chúng, và việc nhấp vào thẻ xem trước không có tác dụng gì. Các nút dưới tin nhắn, nút và liên kết trong văn bản xem trước, liên kết trong tin nhắn HTML và trạng thái biểu tượng cảm xúc của người đó hoạt động như bất kỳ người dùng nào khác, và tin nhắn được đánh dấu là đã đọc ngay khi mở cuộc trò chuyện.

Những thay đổi trong 13.1.1

Commit 007fb3f1 thay đổi 16 tệp, 491 dòng được thêm vào và 29 dòng bị xóa. Chừng nào bảng báo cáo còn ở đó:

Điều gìTrước đâyHiện tại
Thông báo đã đọcgửi khi mở cuộc trò chuyệnkhông gửi
Nút dưới tin nhắnhiển thị và hoạt độngkhông hiển thị
Liên kết trong văn bảnvăn bản thuần túyvăn bản thuần túy, như trước
Xem trước liên kếtthẻ không mở, nhưng nút dưới nó và liên kết trong văn bản của nó hoạt độngkhông có nút, liên kết trong văn bản xem trước bị loại bỏ, phương tiện không mở
Tin nhắn HTMLliên kết và nút hoạt độngliên kết trở thành văn bản, nút bị loại bỏ
Trạng thái biểu tượng cảm xúc của người trò chuyệnhiển thị trong tiêu đề cuộc trò chuyện và trong hồ sơbị ẩn, người đăng ký Premium thay vào đó là một ngôi sao

Đã đọc. Thông báo đã đọc trong Telegram và việc đặt lại bộ đếm tin nhắn chưa đọc của cuộc trò chuyện là cùng một hành động: ứng dụng thông báo cho máy chủ số tin nhắn cuối cùng đã đọc, và máy chủ hiển thị dấu tích thứ hai cho người gửi. Giờ đây, ứng dụng giữ hành động này chừng nào người trò chuyện còn đáng ngờ, và trong một trường hợp khác: khi cuộc trò chuyện với người không có trong danh bạ được mở lần đầu và cài đặt chưa được gửi từ máy chủ. Không thể hủy thông báo đã đọc đã gửi, vì vậy ứng dụng chờ quyết định, chứ không đọc "phòng trường hợp". Trong bình luận về việc kiểm tra thay đổi, có nói rằng trên trình giả lập, các quyết định về việc đã đọc bị trì hoãn và được áp dụng sau khi đóng bảng điều khiển và sau khi gửi tin nhắn.

Nút. Các hàng nút dưới tin nhắn đã bị loại bỏ khỏi các bong bóng thông thường, nhãn dán và tin nhắn video tròn. Đối với tin nhắn HTML, một chuyển đổi riêng biệt đã được thêm vào: các liên kết, địa chỉ email, đề cập, hashtag, số thẻ và địa chỉ TON trở thành văn bản, các nút nhúng biến mất, một nút được định dạng như một liên kết chỉ còn lại văn bản, và hình ảnh mất liên kết. Số điện thoại, lệnh bot, ngày tháng, neo và biểu tượng cảm xúc tùy chỉnh vẫn còn. Mỗi khối giữ số của nó để các trích dẫn từ các tin nhắn như vậy tiếp tục tham chiếu đến cùng một vị trí.

Xem trước liên kết. Thẻ xem trước của tin nhắn như vậy không còn nút, phương tiện từ đó không mở, và từ văn bản xem trước đã bị loại bỏ các liên kết tương tự như từ văn bản tin nhắn.

Trạng thái biểu tượng cảm xúc. Trạng thái không hiển thị trong tiêu đề cuộc trò chuyện, trong chú thích của bảng điều khiển về Premium và trong tiêu đề hồ sơ, bao gồm cả ảnh bìa và màu sắc của trạng thái sưu tầm.

Quy tắc này chỉ áp dụng trong các cuộc trò chuyện cá nhân. Các dòng trong danh sách trò chuyện, tìm kiếm, cũng như các nhóm và kênh có bảng báo cáo không thay đổi.

Cách thoát khỏi chế độ này

Bảng điều khiển bị loại bỏ bởi bốn hành động, nhưng không phải tất cả đều loại bỏ chế độ trong mã ứng dụng:

  1. Đóng bảng điều khiển bằng dấu X. Ứng dụng gọi messages.hidePeerSettingsBar và tự đặt lại các cờ của cuộc trò chuyện, không chờ máy chủ. Báo cáo spam cũng loại bỏ các cờ cục bộ theo cách tương tự.
  2. Chặn người trò chuyện hoặc thêm họ vào danh bạ. Ứng dụng chỉ thay đổi trạng thái chặn hoặc danh bạ, không chạm vào các cờ report_spam và block_contact: chế độ sẽ kết thúc khi máy chủ gửi cài đặt cuộc trò chuyện mới.
  3. Trả lời. Khi gửi bất kỳ tin nhắn nào, ngoại trừ tin nhắn đã lên lịch, ứng dụng tự loại bỏ hai cờ này khỏi cuộc trò chuyện, đề xuất "Thêm vào danh bạ" vẫn còn. Tin nhắn đã lên lịch không đến với ai cho đến giờ đã định và không loại bỏ chế độ.

Cách thứ ba được mô tả trong kho lưu trữ với một lưu ý: các cờ khi trả lời chỉ bị loại bỏ cục bộ, và users.getFullUser ghi đè cài đặt cuộc trò chuyện bằng những gì máy chủ đã gửi mỗi khi cập nhật. Nếu máy chủ không loại bỏ các cờ sau câu trả lời của bạn, chế độ sẽ quay lại vào lần cập nhật tiếp theo. Tính đến ngày 21 tháng 10, các tác giả của thay đổi này chưa kiểm tra điều này, họ không có tài khoản thứ hai để thử nghiệm. Một lựa chọn dự phòng mà họ đề cập là gọi hidePeerSettingsBar khi gửi, nhưng sau đó "Thêm vào danh bạ" cũng sẽ biến mất.

Thông tin về bản dựng

Commit đã được đưa vào nhánh chính vào ngày 22 tháng 10 lúc 11:20 UTC. 51 phút sau, lúc 12:11 UTC, số phiên bản trong versions.json đã thay đổi thành 13.1.1, thẻ release-13.1.1 được đặt trên commit này với số, và 007fb3f1 nằm trong đó ba commit trước đó. Trên App Store, phiên bản 13.1.1 đã được phát hành cùng ngày lúc 18:45 UTC với mô tả "Bug fixes, minor improvements, and more". Bản dựng từ App Store chưa được đối chiếu với mã nguồn mở. Phiên bản tương tự cũng điều chỉnh giao diện cho iPhone Duo gập.

Việc kiểm tra thay đổi được thực hiện trên trình giả lập với một công tắc tạm thời, công tắc này buộc bật chế độ, nhưng nó không được đưa vào commit. Bàn phím thông thường và các nút liên kết trên trình giả lập đã được kiểm tra, còn việc chuyển đổi tin nhắn HTML chỉ được bao phủ bởi các bài kiểm tra, không có tin nhắn HTML thực tế từ người lạ nào trong quá trình kiểm tra. Chữ ký dưới commit là chung của một người và Claude Opus 5.5.

Quốc gia của số điện thoại và dòng CanadaVoIP mới

Thẻ thông tin của người lạ lấy quốc gia của số điện thoại không từ chính số điện thoại, mà từ trường phone_country của cùng cài đặt cuộc trò chuyện: máy chủ gửi mã hai chữ cái, ứng dụng tìm kiếm nó trong danh sách quốc gia help.getCountriesList, chèn tên và vẽ cờ theo mã. Đối với mã FT, iOS viết "Ẩn danh" (đây là số +888), đối với TS — "Test".

Vào ngày 24 tháng 10, một mục mới đã xuất hiện trong danh sách này: mã CP, tên CanadaVoIP, mã điện thoại +1, không có tiền tố và mẫu số. Đầu tiên nó được nhận bởi máy chủ thử nghiệm, vào lúc 09:33 UTC, sau đó là máy chủ chính, vào lúc 12:18 UTC. Mục này được đánh dấu là ẩn. Trước đó, có ba mục ẩn trong danh sách: XG "Global Mobile Satellite System" (+881), XV "International Networks" (+882, +883) và YL "Y-land" (+42). Tổng cộng có 236 mục trong danh sách.

Các mục ẩn không được iOS hiển thị trong phần chọn quốc gia khi đăng nhập, nhưng được lưu trữ và tìm thấy theo mã. Mục này cũng sẽ không xuất hiện khi quay số: khi đối chiếu, nó bị Hoa Kỳ che phủ, Hoa Kỳ xuất hiện sau trong danh sách với cùng mã +1. Chỉ còn một nơi mà ứng dụng sẽ đọc nó — mã phone_country được gửi từ máy chủ. Theo logic này, máy chủ dự định phân biệt các số điện thoại của nhà cung cấp VoIP Canada với các số khác có mã +1, và trong thẻ thông tin của người lạ trên iPhone, thay vì "Canada" sẽ xuất hiện từ CanadaVoIP. Đây là kết luận từ danh sách và mã ứng dụng, chưa có cuộc trò chuyện thực tế nào với mã như vậy được quan sát.

Telegram Desktop loại bỏ hoàn toàn các mục ẩn khi tải danh sách, vì vậy đối với mã CP, nó sẽ vẽ một lá cờ không có tên. Lá cờ của cả hai ứng dụng là giống nhau, theo hai chữ cái: trong ISO 3166-1, mã CP được dành cho đảo Clipperton, một lãnh thổ không người ở của Pháp ở Thái Bình Dương.