Làm thế nào để viết tin nhắn của riêng bạn. Ý tưởng khởi nghiệp: có đáng tạo ra một ứng dụng nhắn tin không? Chi phí để tạo tin nhắn của riêng bạn là bao nhiêu?

Phát triển ứng dụng nhắn tin cho điện thoại thông minh hoặc trang web có thể trở thành một công việc khởi nghiệp thành công. Messengers đã chiếm vị trí đầu tiên về số lượt tải xuống trên thế giới.

Có đáng để tạo một ứng dụng nhắn tin khác không?


Mỗi người dùng cài đặt từ hai đến năm tin nhắn tức thời trên điện thoại của họ. Tất cả chúng đều được sử dụng ở mức độ này hay mức độ khác.

Theo thời gian, một số ứng dụng nhắn tin mất đi vị trí dẫn đầu, nhường chỗ cho những ứng dụng mới. Vì vậy, trong một năm, Skype đã chuyển từ vị trí đầu tiên mà nó đã chiếm giữ trong vài năm xuống vị trí thứ tư. Telegram ở vị trí thứ năm. Nhưng có vẻ như đây cũng chỉ là tình trạng tạm thời vì Telegram cũng đang nhanh chóng chinh phục thị trường. Năm 2017, một xu hướng mới đã xuất hiện - các kênh công cộng và trò chuyện. Sự hiện diện của họ thu hút người dùng mới, về cơ bản biến các tin nhắn tức thời thành phương tiện truyền thông xã hội. Có lẽ đây là lý do khiến Telegram ngày càng phổ biến.

Đánh giá mức độ phổ biến của Messenger

Nguồn vc.ru

Thống kê về tốc độ tăng trưởng số lượng người dùng Messenger cho thấy các ứng dụng nhắn tin rất có tiềm năng. Nhưng khi khởi nghiệp, bạn cần chuẩn bị sẵn sàng cho sự cạnh tranh. Quá trình phát triển trình nhắn tin cho iOS hoặc Android bắt đầu bằng việc xác định chính xác vấn đề và lựa chọn công cụ. Bằng cách này, chúng ta sẽ có được một ứng dụng đáp ứng được nhu cầu của người dùng.


Cách tạo một trình nhắn tin được người dùng yêu cầu

Ban đầu, các trình nhắn tin được tạo dưới dạng trò chuyện, chẳng hạn như WhatsApp hoặc dưới dạng ứng dụng gọi điện - Skype, Viber. Sau đó, họ bắt đầu thêm các chức năng vào ứng dụng nhắn tin mà ban đầu không có. Vì vậy, WhatsApp đã thêm chức năng gọi âm thanh, sau đó là video. Sau đó, các API mở, bot, mặt nạ, trạng thái, chấp nhận thanh toán và các kênh công khai xuất hiện. Tuy nhiên, rất khó để giới thiệu chức năng mới hoặc thay đổi cấu trúc khi Messenger có hàng triệu người dùng. WhatsApp vẫn chưa có API hoặc bot.

Khó khăn chính khi tạo một ứng dụng gửi tin nhắn trên Android hoặc iOS là phát triển kiến ​​trúc. Cấu trúc ứng dụng phải được thiết kế sao cho các tính năng mới có thể được thêm vào nó một cách dễ dàng.

Khi phát triển ứng dụng nhắn tin, chúng tôi không chỉ dựa trên những gì đã có trong các ứng dụng khác mà còn dựa trên những gì có thể có nhu cầu trong tương lai.

Cách tiếp cận của chúng tôi để phát triển kiến ​​trúc tin nhắn

Hầu hết các cách tiếp cận tới thiết kế và phát triển kiến ​​trúc có xu hướng mang tính mô-đun. Nhưng tính mô-đun thì khác và bản thân các mô-đun có thể rất lớn và nguyên khối.

Chúng tôi thiết kế và phát triển kiến ​​trúc theo nguyên tắc Kiến trúc sạch.

Kiến trúc sạch, được mô tả bởi Robert Martin, cho phép bạn thiết kế một hệ thống linh hoạt và có thể mở rộng.

Đây là cách làm phổ biến trong các phần mềm hiện đại, nhưng không phải ai cũng có thể đạt được Kiến trúc sạch. Trong công việc của mình, chúng tôi tuân thủ một số nguyên tắc cụ thể và đạt được kết quả như mong đợi. Hình ảnh thể hiện kiến ​​trúc mới mà Google trình bày. Bằng cách sử dụng phương pháp này và những cải tiến của riêng mình, chúng tôi đã triển khai một kiến ​​trúc gọn gàng trên Android.


Tính linh hoạt, khả năng mở rộng và khả năng kiểm tra

Khi làm việc, chúng tôi đảm bảo rằng kiến ​​trúc được chia thành các lớp tự trị. Sau đó, các đối tượng logic nghiệp vụ, bản trình bày và dữ liệu được tách biệt và có thể thay đổi độc lập với nhau. Bất kể quy mô của hệ thống, cách tiếp cận này vẫn duy trì tính linh hoạt, khả năng mở rộng (mở rộng số lượng chức năng) và khả năng kiểm thử.

Chúng tôi không chỉ tạo ra khả năng mở rộng mã mà còn cả cơ sở hạ tầng hệ thống.

Hiệu suất ứng dụng

Việc các nhóm đang theo đuổi một ngôn ngữ lập trình đã trở nên phổ biến thường xảy ra. Họ phát triển sản phẩm của khách hàng trong đó, nhưng trong quá trình đó họ nhận ra rằng họ đang sử dụng ngôn ngữ không chính xác. Bạn cần hiểu tất cả ưu và nhược điểm của bất kỳ ngôn ngữ và công cụ nào. Bạn cần sử dụng ngôn ngữ phù hợp nhất để xây dựng một hệ thống hiệu quả chứ không phải ngôn ngữ phổ biến hiện nay.

Trong quá trình làm việc, chúng tôi nghĩ về nhiệm vụ của khách hàng và lưu ý đến điều này, chúng tôi tiến hành lựa chọn các công cụ.

Theo quy định, chúng tôi lập trình bằng PHP. Ngôn ngữ lập trình này được sử dụng trong Whatsapp, Facebook, Stackoverflow. PHP không thua kém các ngôn ngữ khác về hiệu suất và có thể chịu được tải cao. Ưu điểm của ngôn ngữ này là sau khi hoàn thành một nhiệm vụ, tài nguyên máy chủ sẽ được giải phóng và kiến ​​trúc được xây dựng phù hợp cũng như nền tảng công nghệ tốt sẽ khắc phục được những thiếu sót của ngôn ngữ.

Chi phí phát triển một dự án bằng PHP rẻ hơn nhiều lần so với các ngôn ngữ như Java và Python. Đồng thời, ứng dụng không thua kém về hiệu suất.

Khi chọn công cụ, chúng tôi tập trung vào mức độ hiệu quả của một trong số chúng có thể giải quyết vấn đề. Về bản chất, chúng tôi điều chỉnh các công cụ cho phù hợp với kiến ​​trúc chứ không phải ngược lại.

Làm việc với số lượng lớn người dùng và tải nặng

Trong công việc của chúng tôi, chúng tôi sử dụng nền tảng NodeJS. Kinh nghiệm của chúng tôi cho thấy nền tảng này phù hợp để tạo các cuộc trò chuyện và ứng dụng di động. NodeJS được thiết kế tốt và cho phép bạn xây dựng các hệ thống có tải cao. Ngay lập tức, trò chuyện trên NodeJS có thể xử lý tải 10.000 kết nối.

Việc phát triển trình nhắn tin cho Android hoặc iOS cho nền tảng này yêu cầu sử dụng Java Script. Ngôn ngữ này phổ biến nên việc tìm nhà phát triển không phải là vấn đề.

Suy nghĩ lại - chúng tôi sử dụng NoSQL DB này vì nó hiệu quả hơn so với các đối thủ cạnh tranh. Trong RethinkDB, trình dịch ngôn ngữ truy vấn, còn được gọi là ReQL, không được triển khai ở cấp độ máy chủ mà được tích hợp dưới dạng ngôn ngữ dành riêng cho miền sang ngôn ngữ mà ứng dụng khách được viết.

Các bảng cơ sở dữ liệu lưu trữ các tài liệu JSON cho phép lồng bất kỳ mức độ nào. Mỗi tài liệu có một khóa chính duy nhất “id” cho bảng cha của nó. Đề cập đến chìa khóa, chúng tôi nhận được một tài liệu. Mỗi hàm truy vấn ReQL hoạt động trên dữ liệu thu được từ hàm trước đó trong chuỗi. Điều này cho phép bạn xây dựng kiến ​​trúc linh hoạt hơn cho các dự án có tải trọng cao và không phải bận tâm đến sự phức tạp của cấu trúc dữ liệu.

Đối thủ cạnh tranh với NoSQL DBMS là MongoDB. Nền tảng này phổ biến trên thị trường, nhưng sự phổ biến không phải lúc nào cũng là chìa khóa thành công. MongoDB có một số vấn đề: xóa tài liệu không giải phóng được dung lượng ổ đĩa nên ứng dụng phải được xây dựng sao cho tài liệu (tệp đối tượng) không bị xóa thường xuyên. MongoDB cũng không hoạt động tốt với nhiều thao tác hàng loạt trên tài liệu, điều này trái với quy tắc xây dựng hệ thống tải cao.

Vấn đề chính khi xây dựng các dự án có tải trọng cao là xây dựng một kiến ​​trúc và sau đó điều chỉnh logic nghiệp vụ của hệ thống cho phù hợp với nó. Một dự án như vậy không phải lúc nào cũng đối phó được với tải nặng. Do đó, chúng tôi làm ngược lại: chúng tôi tìm ra logic nghiệp vụ của toàn bộ hệ thống và sau đó tạo ra kiến ​​trúc hiệu quả cho nó. Các chức năng mới có thể được thêm vào một ứng dụng như vậy. Nó sẽ không làm giảm hiệu suất và không sợ tải cao.


Phát triển giao diện Messenger

Người dùng phải rõ ràng về cách làm việc và phải thuận tiện khi làm việc. Do đó, chúng tôi thường khuyên bạn nên sử dụng thiết kế gốc vì nó thuận tiện và có thể dự đoán được. Ứng dụng hoạt động giống nhau trên các thiết bị khác nhau. Người dùng nhìn thấy các yếu tố quen thuộc, biết cách sử dụng chúng và không thắc mắc về cách sử dụng trình nhắn tin.

Khi phát triển một thiết kế, điều quan trọng là:

    Xử lý các trạng thái trống của cuộc trò chuyện, màn hình, các phần chưa có gì xảy ra. Điều này sẽ giúp người dùng biết rõ hành động nào cần được thực hiện.

    Xử lý phản hồi. Gửi tin nhắn và tải tập tin cần có thời gian. Tại thời điểm này, điều quan trọng là phải cho người dùng thấy rằng quá trình này đang được tiến hành.

    Tất cả các lỗi có thể xảy ra, chẳng hạn như nếu Internet bị mất, người dùng phải hiểu rằng đã xảy ra sự cố.

    Để xác minh số điện thoại, hãy đặt giới hạn thời gian gửi lại SMS có mã xác minh, vì tin nhắn có thể chưa đến và người dùng sẽ có thời gian nhấp để gửi lại mã sáu lần.

    Cảnh báo người dùng rằng anh ta đang sử dụng Internet di động tại thời điểm gửi một tệp lớn.




Sự thuận tiện trong trò chuyện và ngăn ngừa những sai lầm ngớ ngẩn

Điều quan trọng là sắp xếp các tìm kiếm một cách thuận tiện trong một cuộc trò chuyện cụ thể. Nhanh chóng tìm thấy thời điểm thích hợp trong thư từ, tài liệu, ảnh hoặc video mà không cần cuộn ngẫu nhiên qua nguồn cấp dữ liệu.

Trước khi gửi tin nhắn thoại, điều quan trọng là người dùng có thể nghe chúng. Cũng cần có tùy chọn để sửa lỗi hoặc xóa tin nhắn không mong muốn. Việc tạo một ứng dụng nhắn tin trên iPhone hoặc Android đòi hỏi phải xem xét cẩn thận những điều này và các sắc thái khác.

Sự riêng tư

Trên Internet, bạn có thể tìm thấy các chương trình cho phép bạn hack tin nhắn và nhận thư từ cá nhân. Nhiệm vụ đầu tiên của các nhà phát triển là đảm bảo tính ẩn danh hoàn toàn, ngay cả khi không cần tham chiếu đến số điện thoại và khả năng nhận dạng một người bằng cách nào đó. Nhiệm vụ thứ hai là loại bỏ nguy cơ bị hack.

Có những sắc thái ở đây. Ví dụ: để có một cuộc trò chuyện ẩn danh hoàn toàn, người đối thoại, không đề cập đến các đặc điểm cụ thể - số điện thoại, tên, địa điểm - phải hiểu ai là ai. Để làm điều này, bạn cần sử dụng mật mã một lần mà mọi người đều có thể sử dụng nhưng nó sẽ không được lặp lại hai lần. Việc mời mọi người tham gia một cuộc trò chuyện như vậy cũng được thực hiện bằng cách sử dụng một “chìa khóa” chỉ hoạt động một lần và chỉ do chính người đó đặt.

Bảo vệ ảnh chụp màn hình. Mã hóa các thông báo đến. Khả năng xóa tin nhắn nhanh chóng mà không cần xác nhận không cần thiết.


Chi phí để tạo tin nhắn của riêng bạn là bao nhiêu?

Giá của việc phát triển ứng dụng nhắn tin phụ thuộc vào thời gian thực hiện công việc trên ứng dụng. Chức năng càng phức tạp thì chi phí phát triển càng cao. Chúng tôi chỉ có thể đưa ra mức giá cuối cùng cho việc phát triển trình nhắn tin cho iOS, Android hoặc trang web sau khi chúng tôi hiểu những vấn đề cần giải quyết.

Chi phí khuyến mãi và hỗ trợ

Phát triển ứng dụng nhắn tin cho Android hoặc iOS là giai đoạn đầu tiên. Nếu đây không phải là cuộc trò chuyện của công ty thì người đưa tin cần được quảng bá. Để làm điều này, bạn cần đưa một số tiền nhất định vào ngân sách tiếp thị của mình. Điêu nay bao gôm:

    Khuyến mãi ASO (Tối ưu hóa App Store) là tập hợp các công việc nhằm tối ưu hóa một ứng dụng di động. Cụ thể là thành phần chính xác của tiêu đề (tên), từ khóa (từ khóa), mô tả (mô tả), để tối đa hóa khả năng hiển thị của ứng dụng của bạn trong tìm kiếm

    Thanh toán cho vị trí trong cửa hàng Google Play và App Store.

Sau khi ra mắt, ứng dụng cần được phát triển và cập nhật:

    Loại bỏ lỗi và trả lời khiếu nại của người dùng

    Thêm tính năng mới.

Bắt đầu tạo ứng dụng gửi tin nhắn trên Android hoặc iPhone từ đâu

Sự phát triển của một trình nhắn tin tùy chỉnh bắt đầu bằng việc thiết lập nhiệm vụ.

Hãy viết thư hoặc gọi cho chúng tôi, chúng tôi sẽ sắp xếp một cuộc gặp, thảo luận vấn đề và giúp bạn tìm ra giải pháp tối ưu về cách tạo một trình nhắn tin phổ biến cho Android và iOS.

Và cô ấy có một mạng Internet riêng tuyệt vời đằng sau hàng rào, nơi thay vì URL thì có “từ khóa”: cái gì đó nằm giữa địa chỉ của một trang web và từ khóa được mua trong một quảng cáo. Các công ty cạnh tranh để có được những từ khóa thú vị, giống như cách họ cạnh tranh về tên miền ngày nay và quảng cáo trông như thế này: “ghé thăm chúng tôi trên World Wide Web tại www.example.com hoặc nhập Từ khóa AOL: “ngân hàng””.


Lịch sử có xu hướng lặp lại chính nó. Giờ đây, vai trò của America Online do các sứ giả chính đảm nhận: họ đều đứng sau hàng rào, không tương thích với nhau, họ đều phát minh ra từ khóa của riêng mình, họ muốn tóm lấy người dùng và không bao giờ buông tha. Các công ty không quan tâm đến sự cởi mở: những công ty lớn hơn không muốn chia sẻ người dùng với những công ty nhỏ hơn, càng không trở nên cởi mở. Kết quả là không thể gửi tin nhắn ngay cả từ WhatsApp tới Facebook Messenger, mặc dù cả hai đều thuộc cùng một công ty. Và người dùng coi trọng độ tin cậy và sự tiện lợi hơn là tính cởi mở trừu tượng, mặc dù nhiều người khó chịu khi một số bạn bè, chẳng hạn như sử dụng Telegram, một số trên WhatsApp và phụ huynh trên Skype.


Nhưng thật không may, ngày nay không ai đóng vai trò của Internet mở. Tôi muốn thay đổi tình hình. Nếu XMPP không làm được thì có lẽ người khác có thể làm được? Và đây là câu chuyện về Tinode.

Tinode là gì

Tinode là một ứng dụng nhắn tin mã nguồn mở hoàn toàn trên Github. Tất cả các ứng dụng khách (ReactJS và Android) đều được cấp phép theo Apache 2.0, để đơn giản hóa việc tạo các ứng dụng thương mại dựa trên Tinode, máy chủ tuân theo GPL 3.0. Mục tiêu của dự án là tạo ra một trình nhắn tin liên kết đơn giản và thuận tiện cho cả người dùng và nhà điều hành. Đã cài đặt nó - và mọi thứ hoạt động như MySQL hoặc Nginx. Về lâu dài, mục tiêu của dự án là tạo ra một giải pháp thay thế mở cho các trình nhắn tin tức thời độc quyền hiện có, lặp lại những gì Android đã làm đối với các hệ điều hành dành cho điện thoại di động.

Anh ấy có thể làm gì?

Hỗ trợ nhiều thiết bị.

Mọi người đều có một chiếc điện thoại thông minh, đôi khi có nhiều hơn một chiếc, hơn nữa việc sử dụng ứng dụng web từ máy tính chính thường rất tiện lợi. Do đó, việc hỗ trợ nhiều thiết bị là một trong những yêu cầu chính của dự án, yếu tố quyết định các quyết định kiến ​​trúc chính. Nếu người dùng đăng nhập từ một thiết bị mới, bạn không muốn anh ta bắt đầu lại từ đầu như trong WeChat. Điều này có nghĩa là cả sổ địa chỉ và tin nhắn đều phải được lưu trữ trên máy chủ đã được triển khai.


Rõ ràng, việc lưu trữ thông tin người dùng trên máy chủ không phù hợp với tất cả mọi người, vì nó tạo ra rủi ro truy cập không mong muốn: càng có nhiều bản sao dữ liệu được lưu trữ ở những nơi khác nhau thì khả năng xảy ra sự cố càng cao. Vì mục đích này, khả năng các tin nhắn tạm thời và tin nhắn sẽ bị xóa khỏi máy chủ sau khi gửi đến khách hàng được cung cấp. Về mặt kỹ thuật, cũng có khả năng không lưu trữ danh bạ vĩnh viễn trên máy chủ - máy khách sẽ gửi chúng đến máy chủ tại thời điểm kết nối (đăng nhập), sau đó chúng sẽ bị xóa sau khi đăng xuất. Tuy nhiên, các tác giả cho rằng điều này khó thực hiện nên đã không thực hiện.

Trạng thái trực tuyến

Việc phát sóng trạng thái trực tuyến/ngoại tuyến của người dùng trong tin nhắn tức thời được coi là điều hiển nhiên, tuy nhiên, đây là một tính năng rất khó thực hiện. Nó cần phải “hoạt động”, có thể dự đoán được và đáng tin cậy. Độ tin cậy của hoạt động đã loại bỏ việc tạo trạng thái trên máy khách, như được triển khai trong một số ứng dụng XMPP. Trong trường hợp của Tinode, máy chủ tạo trạng thái trực tuyến và gửi nó đến sổ địa chỉ, một lần nữa, yêu cầu lưu trữ danh bạ trên máy chủ và đồng bộ hóa chúng với các ứng dụng khách.

Sự đơn giản của giao thức

Tôi muốn tạo ra giao thức sao cho lộ trình học tập bằng phẳng - bạn không cần phải biết mọi thứ để bắt đầu. Thông số kỹ thuật hóa ra rất nhỏ gọn: 10 yêu cầu của máy khách, 5 phản hồi của máy chủ. Ví dụ: so với hơn 200 trang cốt lõi XMPP, không tính phần mở rộng, gần như là một tờ ghi chú trên khăn ăn.


Việc trình bày dữ liệu được tách biệt khỏi giao thức mạng. Giao thức chỉ yêu cầu một cấu trúc dữ liệu nhất định nhưng không yêu cầu nó được truyền qua mạng theo bất kỳ cách cụ thể nào. Giờ đây, máy chủ hỗ trợ JSON qua websocket và kiểm tra vòng dài, có và không có TLS, cộng với gRPC qua TCP. Hỗ trợ gRPC được một nhà phát triển triển khai trong hai tuần, bao gồm cả việc viết ứng dụng khách văn bản bằng Python. Việc thêm hỗ trợ cho các định dạng và giao thức dữ liệu khác, chẳng hạn như MessagePack hoặc Noise, có thể sẽ mất nhiều thời gian hơn.

Khả năng mở rộng

Một mặt, chẳng hạn, tôi muốn mọi thứ hoạt động ngay lập tức để chức năng chính có thể so sánh với WhatsApp và Telegram ngay lập tức. Mặt khác, mọi người có những nhu cầu khác nhau và bạn cần có khả năng mở rộng chức năng. Tìm kiếm sự cân bằng cũng tương tự như việc lựa chọn giữa kiến ​​trúc nguyên khối và các dịch vụ vi mô: việc có một nguyên khối bất biến là điều không mong muốn và tương tự, thật tệ khi kết thúc với một vườn thú các dịch vụ vi mô, việc quản lý chúng trở thành một nhiệm vụ riêng biệt.


Người ta quyết định chia chức năng thành ba phần - chính, mạng và phụ trợ. Cái chính là thứ cho phép Tinode thực hiện chức năng chính của nó - chuyển tiếp tin nhắn. Mạng - chức năng tương tác với máy chủ, chẳng hạn như định dạng dữ liệu được truyền và giao thức mạng. Phụ trợ - thứ gì đó giải quyết vấn đề cục bộ của ai đó, chẳng hạn như hỗ trợ cơ sở dữ liệu cụ thể dưới dạng phụ trợ hoặc một loại phương thức ủy quyền nào đó, nhưng không ảnh hưởng đến các máy chủ hoặc ứng dụng người dùng khác theo bất kỳ cách nào. Chức năng chính được triển khai trong mã chính. Chức năng mạng được tách riêng nhưng cũng được lưu trữ trong kho lưu trữ chính để tránh tạo ra các máy chủ không tương thích bất cứ khi nào có thể. Phần bổ trợ được triển khai dưới dạng plugin - giao diện Go được biên dịch (hỗ trợ cho các cơ sở dữ liệu khác nhau, các cơ quan cấp phép khác nhau, thông báo đẩy, trình xác thực qua email hoặc điện thoại, hỗ trợ hình ảnh xác thực, v.v.) và điểm cuối gRPC (chatbot và giao diện tìm kiếm).

Khác

  • Có thể, nhưng không phải là yêu cầu, liên kết tài khoản với số điện thoại, email hoặc bất kỳ thứ gì khác.
  • ID người dùng khó đoán và do đó khó gửi thư rác.
  • Các thẻ cho phép bạn triển khai tìm kiếm mọi người như trong WeChat (và giống như WeChat, xây dựng dịch vụ hẹn hò vào ứng dụng nhắn tin) hoặc chia tổ chức thành các phòng ban như trong Slack.
  • Khả năng kết nối người dùng mà không cần đăng ký, chẳng hạn như cần thiết để tổ chức dịch vụ hỗ trợ qua trò chuyện.
  • Giao diện và ví dụ kết nối chatbot.
  • Kế hoạch tạo kênh như trong Telegram.

Tại sao đi?

Máy chủ nhắn tin về cơ bản là một bộ định tuyến: nó nhận tin nhắn từ một kênh, xử lý tin nhắn đó bằng cách nào đó, sau đó truyền nó sang một hoặc nhiều kênh khác. Go (giống như Erlang, nhưng đó là một câu chuyện khác) là lựa chọn lý tưởng để tạo ra chức năng như vậy bởi vì... chứa các nguyên hàm goroutine và chan giúp tổ chức các luồng và trao đổi dữ liệu giữa chúng hiệu quả và đơn giản.


Tất nhiên, một bộ định tuyến có thể được viết bằng cả C/C++ và Java. Tuy nhiên, tất cả những thứ khác đều như nhau, mã rất có thể sẽ phức tạp hơn và cần nhiều nỗ lực hơn để tránh bế tắc.

Vậy thì sao?

Liên đoàn

Một trong những nhiệm vụ chính của Tinode trong năm tới là tạo ra một nền tảng cho liên đoàn. Vì vậy, bất kỳ ai cũng có thể chạy máy chủ Tinode của riêng mình, máy chủ này có thể trao đổi tin nhắn với bất kỳ máy chủ nào khác, chính xác nhất có thể với email. Phân cụm máy chủ đã có thể thực hiện được. Trao đổi mạng giữa máy chủ và máy khách diễn ra thông qua websocket TLS, điều này đối với người quan sát bên ngoài khó có thể phân biệt được với lưu lượng HTTPS đơn giản.


DNS công cộng có thể sẽ được sử dụng, ít nhất là vào thời điểm ban đầu. Tuy nhiên, trong tương lai, việc tìm kiếm máy chủ trò chuyện sẽ được thực hiện theo cách tương tự như được thực hiện trong Bittorrent - sử dụng DHT, một bảng băm phân tán.


Tôi cũng muốn tránh những vấn đề mà XMPP thường bị chỉ trích. Ví dụ: máy chủ XMPP rất hay nói. Lên đến một nửa số tin nhắn là trùng lặp, trong đó ứng dụng khách XMPP gửi thông báo trực tuyến riêng lẻ đến từng liên hệ trong sổ địa chỉ.

Danh tiếng và ra quyết định phân tán

Hệ thống nhắn tin giống với email nhất. Như bạn đã biết, một phần đáng kể trong email là thư rác. Bạn không muốn lặp lại sai lầm của người khác, vì vậy cơ chế hạn chế spam cần được tích hợp ngay vào hệ thống. Vấn đề vẫn chưa được giải quyết triệt để nhưng đã có hướng đi chung:

  • Nhận dạng mật mã của máy chủ gửi.
    Ban đầu, SMTP không liên quan đến bất kỳ nhận dạng nào của người gửi. Đừng giẫm lên cái cào này nữa. Mỗi máy chủ muốn thiết lập liên hệ sẽ được thể hiện bằng một chứng chỉ mật mã. “Ồ, vâng,” bạn nói, “Bây giờ tôi sẽ tạo 100.500 chứng chỉ và mỗi lần tôi sẽ giới thiệu mình là một máy chủ sạch mới”. Và bạn sẽ đúng. Vì vậy điểm tiếp theo.
  • Kế toán danh tiếng phân phối.
    Khi một máy chủ gửi mới, không xác định đến gõ cửa, chúng tôi sẽ gửi yêu cầu đến các máy chủ đã biết để yêu cầu họ báo cáo xếp hạng của máy chủ mới. Và tùy thuộc vào câu trả lời, chẳng hạn, chúng tôi sẽ đặt tốc độ mà máy chủ mới có thể gửi tin nhắn cho chúng tôi.

Nếu bạn nhìn vào một hệ thống phân tán ra quyết định và tính toán danh tiếng từ góc nhìn toàn cảnh, bạn sẽ nhận thấy những điểm tương đồng với blockchain. Có thể blockchain (nhưng không phải tiền điện tử) có thể được sử dụng làm cơ sở để xây dựng một hệ thống danh tiếng phân tán, mặc dù vẫn chưa rõ ràng về cách thức.

Mã hóa

Chà, ngày nay chúng ta phải làm gì nếu không mã hóa tin nhắn? Cuộc trò chuyện giữa hai người có thể sẽ được mã hóa OTR. Nó vẫn chưa rõ ràng với các cuộc trò chuyện nhóm. Tất cả các sơ đồ mã hóa đã biết cho các cuộc trò chuyện nhóm đều có những hạn chế đáng kể hoặc cồng kềnh và khó thực hiện. Ngoài ra, không rõ tầm quan trọng của việc mã hóa các cuộc trò chuyện nhóm: “Nếu hai người biết một bí mật thì nó không còn là bí mật nữa, nhưng nếu ba người biết thì đó đã là một phiên chợ”.


Bạn nghĩ gì về điều này?

Bạn có thể giúp đỡ và chuyển một số tiền để phát triển trang web



Bình luận (205):

                      • Sự ngây thơ của bạn nằm ngoài bảng xếp hạng.


                        Bạn có thể làm cho văn bản in đậm, in nghiêng

                        Bạn đã thử tự mình làm điều này ít nhất một lần chưa?

                              • Bạn cần thay đổi máy chủ xmpp

                                Tôi sử dụng jabberon.ru, có tính năng Tải lên tệp HTTP theo vũ trường của nó (upload.jabberon.ru). Trên Conference.jabber.ru mọi thứ đều hoạt động như bạn nói.


                                Nhưng tôi không có nút để gửi tệp tới cuộc trò chuyện trên Conference.jabber.ru!

Nhóm của chúng tôi, vốn thực sự bị ám ảnh bởi vấn đề bảo mật thông tin, đã triển khai nhiều giải pháp thú vị trong Eleet.

Dưới đây là tám tính năng sản phẩm ảnh hưởng đáng kể đến bảo mật trực tuyến của bạn. Một số ý tưởng trong số này hoàn toàn độc đáo: chỉ Eleet Private Messenger mới có được điều này. Những cái khác, ở dạng này hay dạng khác, có thể được tìm thấy trong số các đối thủ cạnh tranh, nhưng chúng tôi vẫn sẽ cho bạn biết về chúng: xét cho cùng, điều quan trọng là hệ thống phức tạp do nhóm phát triển Eleet xây dựng.

Vì vậy, hãy bắt đầu.

1. Không kết nối được với điện thoại

Điều đầu tiên và quan trọng nhất. Ngày nay có nhiều ứng dụng nhắn tin tức thời yêu cầu mức độ bảo mật cao, nhưng... hầu như luôn làm việc với chúng đều bắt đầu bằng việc đăng ký bằng số điện thoại di động. Ngay cả FireChat, hoạt động trên mạng lưới phân tán, cũng có nhược điểm này.

Theo chúng tôi, sau này việc nói về ẩn danh không còn ý nghĩa gì nữa. Bằng cách này hay cách khác, bạn đã đưa cho ai đó số điện thoại của mình - và nếu nó rơi vào tay kẻ xấu, danh tính và vị trí chính xác của bạn sẽ rất dễ dàng được xác định.

Chúng ta đừng quên phương pháp tầm thường để bỏ qua ủy quyền qua SMS, phương pháp rất phổ biến ngày nay: tạo một thẻ SIM trùng lặp. Các nhà khai thác di động có thể dễ dàng thực hiện việc này vì lợi ích của người khác. Đúng vậy, “xác thực hai yếu tố” khét tiếng bằng mã được gửi qua tin nhắn văn bản gần như không đáng tin cậy như nhiều người nghĩ.

Trong bất kỳ tùy chọn nào trong số này, việc mã hóa tốt đến mức nào, mật khẩu có đáng tin cậy hay không... đó là lý do tại sao không có ủy quyền theo số điện thoại trong Eleet Messenger.

2. Không có mối liên hệ nào với tính cách

Đây không phải là một chức năng cụ thể của ứng dụng mà là một ý tưởng chung mà chúng tôi thực hiện nhất quán - và nó diễn ra một cách tự nhiên từ điểm trước đó. Vì vậy, tài khoản Eleet Private Messenger của bạn hoàn toàn không liên quan gì đến danh tính thực của bạn. Sử dụng trình nhắn tin của chúng tôi, bạn sẽ không để lại dấu vết nào cho phép bạn kết nối con người thật của bạn với bạn trong không gian thông tin Eleet.

3. ID riêng

Vẫn không chắc chắn liệu tài khoản của bạn có thể truy cập được không? Tốt: tạo một ID riêng bổ sung có đầy đủ chức năng của ID “chính”. Đồng thời, tất cả dữ liệu liên quan đến nó (danh bạ, nhật ký, nội dung) sẽ được lưu trữ riêng và sẽ biến mất khi xóa ID riêng - không để lại bất kỳ dấu vết nào trong tài khoản chính.

4. Đừng “tỏa sáng” trực tuyến

Một trong những điều thú vị nhỏ: người dùng ứng dụng nhắn tin của chúng tôi có cơ hội che giấu hoàn toàn sự hiện diện trực tuyến của họ. Không, ý của chúng tôi không chỉ đơn giản là ẩn thời gian của lần đăng nhập cuối cùng - mà là "tàng hình" chính thức. Nhiều người bỏ lỡ điều này trên mạng xã hội và không phải lúc nào người đưa tin cũng mang đến cơ hội như vậy.

5. Bạn thực sự có thể xóa mọi thứ

Điều này không nhỏ như nó có vẻ. Hầu hết các công cụ liên lạc trực tuyến đều cho phép bạn xóa nhật ký và danh bạ từ phía bạn: nhưng người đối thoại sẽ vẫn có cả thư từ và ID của bạn. Thật khó để gọi những điều kiện như vậy là phù hợp với yêu cầu bảo mật thông tin.

Ứng dụng của chúng tôi không có vấn đề này. Bạn có thể dễ dàng xóa mình khỏi danh sách liên lạc của người khác. Bất kỳ người dùng nào khác cũng sẽ không có nhật ký liên lạc với bạn, nếu bạn muốn. Do đó, chẳng hạn, không ai có thể tống tiền bạn bằng thư từ gây tổn hại.

Thực tế là đây chỉ là một lớp bảo mật bổ sung chứ không phải là yếu tố chính để bảo vệ cuộc trò chuyện mà bạn đã tạo. Mã PIN rất dễ nhớ và thuận tiện để nhập từ bất kỳ thiết bị nào: điều này, theo quy luật, không thể nói về mật khẩu mạnh.

Mã PIN không đóng vai trò then chốt trong việc bảo mật thông tin nhưng lại giúp người dùng yên tâm hơn.

7. Đặc biệt là những cuộc trò chuyện bí mật

Thông thường, khi nói đến bảo mật thông tin, trọng tâm là giám sát bên ngoài: kẻ tấn công, đối thủ cạnh tranh, cơ quan chức năng. Nhưng điều gì sẽ xảy ra nếu bạn không hoàn toàn tin tưởng vào người đối thoại của mình?

Thật đơn giản: tạo một cuộc trò chuyện ẩn danh với họ bằng cách nhập bất kỳ biệt hiệu nào. Những người mà bạn giao tiếp trong cuộc trò chuyện này sẽ không bao giờ biết ID thực của bạn. Đồng thời, cuộc trò chuyện có thể được chuyển sang chế độ “tự hủy” sau một thời gian nhất định.

8. Và điều thú vị nhất!

Đương nhiên, chúng tôi đã lưu tính năng yêu thích của mình lần cuối. Người dùng Eleet Private Messenger có thể đặt “xóa mã pin”. Nó là gì?

Nhìn từ bên ngoài, có vẻ như bạn đang nhập mã PIN rất bình thường (giống như mã được mô tả trong đoạn thứ sáu). Biện pháp ủy quyền thường xuyên. Trên thực tế, với lệnh này, Eleet sẽ xóa ngay lập tức tất cả dữ liệu của bạn - thư từ, danh bạ, tài liệu đã gửi và những thứ tương tự. Và như bạn đã biết, bằng cách “xóa”, nhóm của chúng tôi có nghĩa là xóa thực sự, vĩnh viễn: không thể khôi phục được gì.

Chúng tôi sẽ không liệt kê những tình huống mà chức năng này có thể trở nên quan trọng: chúng tôi tin rằng bản thân độc giả có thể tưởng tượng ra một số lựa chọn cho việc này. Như họ nói, "nếu bạn hiểu ý của chúng tôi."

Cuối cùng, chúng tôi nhắc lại: Eleet Private Messenger được tạo ra bởi những người coi tính ẩn danh trên Internet, khả năng bảo vệ đáng tin cậy đối với mọi dữ liệu cá nhân và không gian cá nhân ảo là những giá trị quan trọng nhất. Mọi nỗ lực của nhóm phát triển đều nhằm mục đích giúp Eleet an toàn nhất có thể ở mọi cấp độ.

Như bạn có thể thấy, chúng tôi đã làm được rất nhiều theo hướng này. Và thậm chí nhiều hơn nữa sẽ được thực hiện.

Chúng ta sẽ cần:
- một máy chủ có địa chỉ IP tĩnh màu trắng;
- 2 máy tính phía sau NAT với kiểu kết nối Full Cone NAT (hoặc 1 máy tính có 2 máy ảo);
- Máy chủ STUN.

Full Cone NAT là một kiểu dịch địa chỉ mạng trong đó có sự dịch một-một giữa địa chỉ nội bộ: cổng nội bộ và địa chỉ công cộng: cặp cổng công cộng.

Đây là những gì chúng ta có thể đọc về máy chủ STUN trên Wiki:

“Có những giao thức sử dụng gói UDP để truyền giọng nói, hình ảnh hoặc văn bản qua mạng IP. Thật không may, nếu cả hai bên giao tiếp đều sử dụng NAT thì kết nối không thể được thiết lập theo cách thông thường. Đây là lúc STUN phát huy tác dụng. Nó cho phép máy khách phía sau máy chủ dịch địa chỉ (hoặc một số máy chủ như vậy) xác định địa chỉ IP bên ngoài, phương thức dịch địa chỉ và cổng trên mạng bên ngoài được liên kết với một số cổng nội bộ cụ thể.”

Khi giải quyết vấn đề, các mô-đun Python sau đã được sử dụng: socket, twist, stun, sqlite3, os, sys.

Để trao đổi dữ liệu, cả giữa Máy chủ và Máy khách cũng như giữa Máy chủ, Máy khách và Máy chủ báo hiệu, giao thức UDP được sử dụng.

Nói chung, cơ chế hoạt động trông như thế này:

Máy chủ<->máy chủ STUN
Khách hàng<->máy chủ STUN

Máy chủ<->Máy chủ tín hiệu
Khách hàng<->Máy chủ tín hiệu

Máy khách -> Máy chủ

1. Máy khách đứng sau NAT với loại kết nối Full Cone NAT, gửi tin nhắn đến máy chủ STUN, nhận được phản hồi dưới dạng IP bên ngoài và PORT mở;

2. Máy chủ đứng sau NAT với kiểu kết nối Full Cone NAT, gửi tin nhắn đến máy chủ STUN, nhận được phản hồi dưới dạng IP bên ngoài và mở PORT;

Đồng thời, Máy khách và Máy chủ biết IP và PORT bên ngoài (màu trắng) của Máy chủ báo hiệu;

3. Máy chủ gửi dữ liệu về IP và PORT bên ngoài của nó đến Máy chủ báo hiệu, Máy chủ báo hiệu sẽ lưu trữ chúng;

4. Máy khách gửi đến Máy chủ báo hiệu dữ liệu về IP và PORT bên ngoài của nó cũng như id_destination của Máy chủ được yêu cầu mà nó mong đợi IP bên ngoài, PORT.

Máy chủ Tín hiệu lưu chúng, tìm kiếm cơ sở dữ liệu bằng cách sử dụng id_destination và trả về thông tin được tìm thấy dưới dạng chuỗi: “id_host, name_host, ip_host, port_host”;

5. Máy khách chấp nhận thông tin tìm thấy, chia nhỏ thông tin đó bằng dấu phân cách và sử dụng (ip_host, port_host), gửi tin nhắn đến Máy chủ.

Các ứng dụng được viết bằng Python phiên bản 2.7, được thử nghiệm trên Debian 7.7.

Hãy tạo một tệp server.py có nội dung:

máy chủ.py

# -*- mã hóa: utf-8 -*- #SERVER từ nhập ổ cắm * nhập sys nhập stun def sigserver_exch(): # SERVER<->MÁY CHỦ TÍN HIỆU # MÁY CHỦ<- КЛИЕНТ # СЕРВЕР - отправляет запрос на СИГНАЛЬНЫЙ СЕРВЕР с белым статическим IP со своими данными о текущих значениях IP и PORT. Принимает запрос от КЛИЕНТА. #Внешний IP и PORT СИГНАЛЬНОГО СЕРВЕРА: v_sig_host = "XX.XX.XX.XX" v_sig_port = XXXX #id этого КЛИЕНТА, имя этого КЛИЕНТА, id искомого СЕРВЕРА v_id_client = "id_server_1002" v_name_client = "name_server_2" v_id_server = "none" #IP и PORT этого КЛИЕНТА v_ip_localhost = "XX.XX.XX.XX" v_port_localhost = XXXX udp_socket = "" try: #Получаем текущий внешний IP и PORT при помощи утилиты STUN nat_type, external_ip, external_port = stun.get_ip_info() #Присваиваем переменным белый IP и PORT сигнального сервера для отправки запроса host_sigserver = v_sig_host port_sigserver = v_sig_port addr_sigserv = (host_sigserver,port_sigserver) #Заполняем словарь данными для отправки на СИГНАЛЬНЫЙ СЕРВЕР: #текущий id + имя + текущий внешний IP и PORT, #и id_dest - укажем "none" #В качестве id можно использовать хеш случайного числа + соль data_out = v_id_client + "," + v_name_client + "," + external_ip + "," + str(external_port) + "," + v_id_server #Создадим сокет с атрибутами: #использовать пространство интернет адресов (AF_INET), #передавать данные в виде отдельных сообщений udp_socket = socket(AF_INET, SOCK_DGRAM) #Присвоим переменным свой локальный IP и свободный PORT для получения информации host = v_ip_localhost port = v_port_localhost addr = (host,port) #Свяжем сокет с локальными IP и PORT udp_socket.bind(addr) print("socket binding") #Отправим сообщение на СИГНАЛЬНЫЙ СЕРВЕР udp_socket.sendto(data_out,addr_sigserv) while True: #Если первый элемент списка - "sigserv" (сообщение от СИГНАЛЬНОГО СЕРВЕРА), #печатаем сообщение с полученными данными #Иначе - печатаем сообщение "Message from CLIENT!" data_in = udp_socket.recvfrom(1024) if data_in == "sigserv": print("signal server data: ", data_in) else: print("Message from CLIENT!") #Закрываем сокет udp_socket.close() except: print("exit!") sys.exit(1) finally: if udp_socket <>


Hãy tạo một tệp client.py với nội dung:

client.py

# -*- mã hóa: utf-8 -*- # CLIENT from socket import * import sys import stun def sigserver_exch(): # CLIENT<->SIGNALING SERVER # CLIENT -> SERVER # CLIENT - gửi yêu cầu đến SIGNALING SERVER với IP # màu trắng để lấy các giá trị IP và PORT hiện tại của SERVER đằng sau NAT để kết nối với nó. #IP bên ngoài và PORT của MÁY CHỦ TÍN HIỆU: v_sig_host = "XX.XX.XX.XX" v_sig_port = XXXX #id của KHÁCH HÀNG này, tên của KHÁCH HÀNG này, id của MÁY CHỦ được tìm kiếm v_id_client = "id_client_1001" v_name_client = "name_client_1" v_id_server = "id_server_1002" # IP và PORT của CLIENT này v_ip_localhost = "XX.XX.XX.XX" v_port_localhost = XXXX udp_socket = "" try: #Lấy IP và PORT bên ngoài hiện tại bằng tiện ích STUN nat_type, external_ip, external_port = stun.get_ip_info() #Gán cho các biến IP trắng và PORT của máy chủ báo hiệu để gửi yêu cầu Host_sigserver = v_sig_host port_sigserver = v_sig_port addr_sigserv = (host_sigserver,port_sigserver) #Điền dữ liệu vào từ điển để gửi đến MÁY CHỦ TÍN HIỆU: #current id + tên + IP và PORT bên ngoài hiện tại, #và id_dest - id của một máy chủ đã biết mà chúng tôi muốn liên hệ. #Là id, bạn có thể sử dụng hàm băm của một số ngẫu nhiên + salt data_out = v_id_client + "," + v_name_client + "," + external_ip + "," + str(external_port) + "," + v_id_server #Tạo ổ cắm với thuộc tính: #use space Địa chỉ Internet (AF_INET), #truyền dữ liệu dưới dạng tin nhắn riêng udp_socket = socket(AF_INET, SOCK_DGRAM) #Gán biến cho IP cục bộ của bạn và PORT miễn phí để nhận thông tin máy chủ = v_ip_localhost port = v_port_localhost addr = (máy chủ, cổng) #Liên kết ổ cắm với IP cục bộ và PORT udp_socket.bind(addr) #Gửi tin nhắn đến MÁY CHỦ TÍN HIỆU udp_socket.sendto(data_out, addr_sigserv) while True: #If thành phần đầu tiên của danh sách là "sigserv " (tin nhắn từ MÁY CHỦ TÍN HIỆU), #in tin nhắn chứa dữ liệu đã nhận và gửi tin nhắn #"Xin chào, MÁY CHỦ!" đến máy chủ tại địa chỉ được chỉ định trong tin nhắn. data_in = udp_socket.recvfrom(1024) data_0 = data_in data_p = data_0.split(",") if data_p == "sigserv": print("dữ liệu máy chủ tín hiệu: ", data_p) udp_socket.sendto("Xin chào, MÁY CHỦ!" ,(data_p,int(data_p))) else: print("Không, đó không phải là Rio de Janeiro!") udp_socket.close() ngoại trừ: print ("Exit!") sys.exit(1) cuối cùng: if udp_socket<>"" udp_socket.close() sigserver_exch()


Hãy điền vào các trường thích hợp trong các phần: “IP bên ngoài và PORT CỦA MÁY CHỦ TÍN HIỆU” và “IP và PORT của KHÁCH HÀNG này”.

Hãy tạo một tệp signal_server.py với nội dung:

signal_server.py

# -*- mã hóa: utf-8 -*- # MÁY CHỦ TÍN HIỆU #Twisted - cấu trúc hướng sự kiện #Sự kiện được điều khiển bởi các hàm - trình xử lý sự kiện #Vòng lặp sự kiện giám sát các sự kiện và chạy trình xử lý sự kiện tương ứng #Công việc của vòng lặp nằm trên đối tượng lò phản ứng từ mô-đun Twisted.internet từ Twisted.internet nhập lò phản ứng từ Twisted.internet.protocol import DatagramProtocol import sys, os import sqlite3 class Query_processing_server(DatagramProtocol): # SIGNAL SERVER<->CLIENT # CLIENT -> SERVER # hoặc # SIGNAL SERVER<->MÁY CHỦ # MÁY CHỦ TÍN HIỆU - chấp nhận các yêu cầu từ KHÁCH HÀNG và MÁY CHỦ # lưu trữ các giá trị IP và PORT hiện tại của họ # (nếu thiếu, tạo mới + tên và mã định danh) # và cấp IP và PORT của MÁY CHỦ theo yêu cầu của KHÁCH HÀNG . def datagramReceived(self, data, addr_out): conn = "" try: #Split dữ liệu đã nhận theo dấu phân cách (,) #id_dest - id máy chủ được yêu cầu data = data.split(",") #Yêu cầu chỉ định đường dẫn đến tệp cơ sở dữ liệu sqlite3, nếu không có, cơ sở dữ liệu mới sẽ được tạo dọc theo đường dẫn đã chỉ định: path_to_db = raw_input("Nhập tên db. Ví dụ: "/home/user/new_db.db": ") path_to_db = os.path. join(path_to_db) #Tạo kết nối với DB conn = sqlite3.connect(path_to_db) #Chuyển đổi chuỗi byte thành Unicode conn.text_factory = str #Tạo đối tượng con trỏ c = conn.cursor() #Tạo bảng tuân thủ cho máy chủ c. exec("""TẠO BẢNG NẾU KHÔNG Tồn tại bảng tuân thủ ( văn bản "id_host" ĐỘC ĐÁO, văn bản "name_host", văn bản "ip_host", \ "port_host" văn bản)""") #Thêm máy chủ mới nếu chưa được tạo #Cập nhật ip , chuyển dữ liệu cho máy chủ hiện có c.execute("CHÈN HOẶC BỎ QUA VÀO GIÁ TRỊ_bảng tuân thủ (?, ?, ?, ?);", dữ liệu) #Save thay đổi conn.commit() c.execute("CHỌN * TỪ bảng tuân thủ" ) #Tìm kiếm dữ liệu máy chủ theo id của nó c.execute( """SELECT id_host, name_host, ip_host, port_host from attachment_table WHERE id_host=?"", (data,)) cf = c.fetchone() if cf == None : print ("Không tìm thấy Server_id!") else: #transport.write - gửi tin nhắn có dữ liệu: id_host, name_host, ip_host, port_host và nhãn sigserver lst = "sigserv" + "," + cf + "," + cf + "," + cf + "," + cf self .transport.write(str(lst), addr_out) #Đóng kết nối conn.close() ngoại trừ: print ("Exit!") sys.exit(1) cuối cùng : nếu kết nối<>"" conn.close() lò phản ứng.listenUDP(9102, Query_processing_server()) print("chạy lò phản ứng!") lò phản ứng.run()

Thứ tự khởi chạy ứng dụng như sau:
- signal_server.py
- server.py
- client.py

Rằng số lượng người dùng tin nhắn vào năm 2021 sẽ lên tới gần hai tỷ rưỡi — tức là một phần ba dân số Trái đất. Có chỗ đứng nào cho công ty khởi nghiệp của bạn trong thị trường ứng dụng di động không và ứng dụng nhắn tin của bạn cần có những tính năng gì để nó có thể trở nên phổ biến trong môi trường cạnh tranh cao?

Với sự ra đời của điện thoại thông minh và các ứng dụng liên lạc trong cuộc sống của chúng ta, các tin nhắn tức thời giá rẻ hoặc thậm chí miễn phí đã trở thành một sự thay thế tuyệt vời cho các dịch vụ SMS và MMS. Các ứng dụng nhắn tin tức thời hiện đại cung cấp cho người dùng nhiều tùy chọn - trò chuyện và gọi nhóm, trao đổi nhanh ảnh và video, v.v.

Xu hướng thị trường tin nhắn di động - Châu Á đang theo kịp

WhatsApp vs Facebook Messenger - đối thủ và đối tác

Vào năm 2014, gã khổng lồ truyền thông Facebook đã mua lại ứng dụng nhắn tin WhatsApp với giá 19 tỷ USD và rõ ràng họ không hối tiếc về điều đó. Số lượng người dùng WhatsApp đang hoạt động từ lâu đã vượt quá một tỷ, hay chính xác hơn là 1,3 tỷ tính đến tháng 7 năm 2017. Mặc dù thực tế là FB Messenger và WhatsApp cung cấp cho người dùng bộ chức năng khá giống nhau và thậm chí là giao diện tương tự nhau, nhưng hiện tại, cả hai đều chiếm hai vị trí đầu tiên trong bảng xếp hạng các ứng dụng nhắn tin tức thời di động phổ biến nhất trên thế giới.

whatsapp

Điều đáng chú ý là WhatsApp đặc biệt phổ biến bên ngoài Hoa Kỳ và cho đến nay đã cạnh tranh thành công với các ứng dụng nhắn tin tức thời ở châu Á. Ngoài ra, ứng dụng này đang có nhu cầu lớn ở các thị trường mới nổi như Brazil, Mexico và Thổ Nhĩ Kỳ.

Kể từ khi ra mắt vào năm 2009, WhatsApp đã phát triển từ một công ty khởi nghiệp về nhắn tin thành công ty dẫn đầu ngành, có mặt trên hầu hết mọi hệ điều hành di động. Ngày nay, WhatsApp, với tư cách là một giải pháp thay thế cho SMS, đặc biệt thuận lợi khi sử dụng cho các tin nhắn nhóm và liên lạc quốc tế. Sự phổ biến của WhatsApp trên thị trường nhắn tin toàn cầu cũng được đảm bảo bởi các chức năng chính của nó:

  • Đăng ký bằng số điện thoại;
  • Sự kiện thời gian thực;
  • Gửi tập tin và hình ảnh;
  • Ghi âm tin nhắn thoại;
  • Các cuộc gọi thoại.

WhatsApp cũng cho phép bạn tải tệp từ các dịch vụ đám mây của bên thứ ba như Google Drive, OneDrive và iCloud trực tiếp vào tin nhắn. Đối với iOS, Siri được tích hợp vào ứng dụng; nó có thể gửi tin nhắn và thực hiện cuộc gọi thoại trực tiếp trong Messenger. Trong đó, bạn có thể đọc thêm về các tính năng của ứng dụng nhắn tin phổ biến nhất và cũng có thể tìm hiểu chi phí của một ứng dụng di động như WhatsApp.

Tin nhắn Facebook

Facebook Messenger, một ứng dụng được thiết kế đặc biệt để liên lạc, đã trở nên phổ biến gần giống như WhatsApp kể từ khi ra mắt vào năm 2011. Giao diện sáng sủa, rõ ràng của ứng dụng rất thiết thực và thân thiện với người dùng.

Ngoài tin nhắn văn bản, biểu tượng cảm xúc và khả năng chia sẻ tập tin đa phương tiện, chức năng của ứng dụng khá phong phú:

  • Cuộc gọi thoại và video;
  • Khả năng trả lời tin nhắn trong cuộc trò chuyện, gửi ảnh gif và nhãn dán;
  • Khả năng thêm một người làm bạn bè bằng cách chỉ cần quét mã hồ sơ của người đó rất tiện lợi khi bạn không muốn nhập tên của người đó hoặc tìm kiếm người đó trong số nhiều tên trùng tên;
  • Một số lượng lớn trò chơi được tích hợp trong Messenger;
  • Chức năng cài đặt nhắc nhở về kế hoạch;
  • Thực sự có một số lượng lớn chatbot;
  • Các bản cập nhật mới nhất cho trình nhắn tin mang đến khả năng chia sẻ vị trí hiện tại của bạn với bạn bè;

Năm 2016, FB Messenger đã trở thành một trong những ứng dụng di động phổ biến nhất ở Mỹ, thu hút hơn 100 triệu người dùng mỗi tháng. Messenger nhập danh bạ từ Facebook và dễ sử dụng trên cả thiết bị di động và máy tính để bàn.

Các chức năng phổ biến nhất của FB Messenger

Slack là ngôi sao đang lên của truyền thông doanh nghiệp

Phần mềm truyền thông doanh nghiệp ngày càng trở nên phổ biến. Trong vòng chưa đầy bốn năm kể từ khi Slack ra mắt vào năm 2013, nó đã trở thành một trong những ứng dụng nhắn tin phổ biến nhất dành cho doanh nghiệp. Vào tháng 2 năm 2017, số lượng người dùng hoạt động của nó đã đạt 5 triệu. Theo một cuộc khảo sát, 1/3 số người được hỏi lưu ý rằng sau khi đưa Slack vào quy trình kinh doanh, hiệu quả công việc tăng lên 20-40%.

Ngoài việc cho phép người dùng gửi tin nhắn cho nhau, Slack còn tích hợp khá nhiều tính năng phục vụ liên lạc và giải trí:

  • Khả năng tạo nhiều kênh khác nhau dựa trên chủ đề trò chuyện;
  • Bot Slack hoạt động giống như một sổ ghi chú ảo nơi bạn có thể đính kèm các ý tưởng mình thích;
  • Khả năng tìm kiếm tin nhắn theo từ khóa;
  • Tích hợp với các dịch vụ của bên thứ ba như Asana, Dropbox và Google Hangouts;
  • Slack cũng được tích hợp với Giphy (một ứng dụng tìm ảnh GIF trên web), người dùng có thể truy cập ứng dụng bằng cách chỉ cần gõ "/giphy" và một từ khóa như "Xin chào thế giới!";
  • Có lẽ nhược điểm của ứng dụng nhắn tin doanh nghiệp này bao gồm thực tế là nó không lưu thư từ trong thời gian dài, mặc dù, như động lực cho thấy, thực tế này không khiến người dùng bận tâm.

SnapChat - tạo ra hiện thực thoáng qua

Thanh thiếu niên Mỹ gọi Snapchat là ứng dụng quan trọng nhất trong thế hệ của họ. Nói chuyện trực tiếp với khán giả trẻ, gần một phần ba người dùng trưởng thành của Snapchat ở độ tuổi từ 18 đến 24. Nói một cách ngắn gọn, Snapchat cho phép bạn chia sẻ tin nhắn ảnh và video và thời lượng tồn tại của những tin nhắn đó do người gửi đặt ra. Người dùng có thể thêm nhiều hiệu ứng, hình vẽ nguệch ngoạc và đồ họa vào ảnh. Thông tin chi tiết hơn về các tính năng của Snapchat Messenger:

  • Đặt giới hạn thời gian: mỗi tin nhắn gửi sẽ tự hủy sau một khoảng thời gian nhất định - người dùng không phải lo lắng rằng hình ảnh của mình sẽ bị chia sẻ;
  • Báo cáo ảnh chụp màn hình là một tùy chọn khác để đảm bảo an toàn dữ liệu. Nếu một trong những người nhận quyết định chụp ảnh màn hình tin nhắn, người gửi sẽ nhận được thông báo và sau đó sẽ cẩn thận chia sẻ tệp với người này;
  • Khả năng thực hiện cái gọi là hoán đổi khuôn mặt - thêm ảnh từ thư viện điện thoại vào ảnh của bạn;
  • Ống kính có lẽ là lựa chọn thú vị và phổ biến nhất. Trình nhắn tin Snapchat quét khuôn mặt của một người trong khi chụp ảnh hoặc quay video, sau đó bạn có thể áp dụng tất cả các loại hiệu ứng và mặt nạ;
  • Snapcode là hình đại diện tương tự như mã QR, duy nhất cho mỗi người dùng. Nếu bạn chụp ảnh màn hình hoặc ảnh Snapcode và gửi cho bạn bè, anh ấy sẽ có thể thêm bạn trên Snapchat mà không cần nhập biệt hiệu;
  • Mùa hè này, Messenger đã thêm khả năng chia sẻ vị trí của bạn với bạn bè.

Ngày nay, Snapchat là một trong những ứng dụng nhắn tin tức thời phổ biến nhất trên thế giới để trao đổi các tệp đa phương tiện. Kể từ khi ra mắt ứng dụng vào năm 2011, số lượng người dùng hoạt động của nó hiện đã vượt quá 150 triệu.

Có đáng để tạo một ứng dụng nhắn tin khác không?

Nếu bạn đang có ý định tạo một ứng dụng nhắn tin, bạn nên chuẩn bị cho việc bạn sẽ phải đối mặt với sự cạnh tranh gay gắt trên thị trường ứng dụng. Những người đưa tin hàng đầu dạy chúng tôi rằng tiêu chí chính để thành công là tìm ra vị trí độc đáo của bạn và đáp ứng nhu cầu của đối tượng mục tiêu, cung cấp cho người dùng chức năng phong phú và giao diện thuận tiện. Ví dụ, Slack đang tích cực chinh phục thị trường bằng cách cung cấp các giải pháp truyền thông doanh nghiệp. SnapChat đã tiến một bước và thu hút lượng khán giả trẻ sống trong thời đại kỹ thuật số, những người không thể tưởng tượng được cuộc sống của mình nếu không có đa phương tiện.

WhatsApp và FB Messenger là một ví dụ về cách hai sản phẩm có chức năng và giao diện tương tự nhau có thể cùng tồn tại hoàn hảo trên thị trường giải pháp truyền thông. Sao có thể như thế được? Hãy nhớ có bao nhiêu tin nhắn tức thời trên điện thoại của bạn. Vài năm trước, công ty chúng tôi đã phát triển một ứng dụng nhắn tin hỗ trợ các sự kiện Thời gian thực, giống như WhatsApp, nhưng dành cho nhu cầu của công ty, như Slack. Một ví dụ điển hình là ứng dụng nhắn tin di động của bạn có thể kết hợp chức năng của các giải pháp hiện có và được thiết kế cho các mục đích khác nhau. Hoặc bạn có thể tiến thêm một bước nữa và tạo ra thứ gì đó hoàn toàn mới trong lĩnh vực ứng dụng giao tiếp.

Các chuyên gia của chúng tôi có nhiều kinh nghiệm trong việc tạo các ứng dụng di động cấp trung và cấp doanh nghiệp. Bạn có cần phát triển MVP, ứng dụng cho iOS và Android hoặc thiết kế tùy chỉnh không? Hãy nhìn vào của chúng tôi ngày hôm nay!