Thông báo đẩy của iOS hoạt động như thế nào?


98

Làm cách nào để thông báo "đẩy" của iOS được gửi đến một thiết bị cụ thể mà thiết bị đó không cần thăm dò ý kiến ​​của máy chủ?

Ví dụ: giả sử tôi đã nhận được một tin nhắn mới trên Facebook. Facebook thông báo cho Apple rằng thiết bị của tôi sẽ nhận được thông báo như vậy. Nhưng làm thế nào Apple biết thiết bị / IP nào để đẩy tin nhắn đến?


2
@Wain Tôi đang tìm kiếm lời giải thích chi tiết ở cấp độ kỹ thuật. Bài báo đó là cực kỳ cao. Vậy thiết bị của tôi luôn duy trì kết nối mở với các máy chủ đẩy của Apple?
Andy Hin

Tôi quen thuộc hơn với android push, nhưng thông thường, khi bạn cài đặt ứng dụng, nó sẽ đăng ký thiết bị với một ID duy nhất với Apple. Sau đó, khi facebook gửi tin nhắn đến apple, apple sẽ chuyển nó tới ID duy nhất của các thiết bị.
Panama Jack

6
@Pjack yep, nhưng với việc thiết bị của tôi liên tục thay đổi các tháp di động khác nhau, các mạng wifi khác nhau, làm cách nào Apple biết được IP cho ID duy nhất của tôi?
Andy Hin

@whydna Cảm ơn bạn đã đặt câu hỏi này. Tôi muốn hiểu chính xác điều tương tự. Tôi tin rằng điều này trả lời câu hỏi của tôi ở đây: stackoverflow.com/questions/18859732/…
MightyMouse,

@AndyHin Hệ điều hành thiết bị (iOS) biết (các) máy chủ APN nào là hợp lệ. Thiết bị đang kết nối với các máy chủ này và luôn mở kết nối. Kết nối này có thể được liên kết với id thiết bị và siêu dữ liệu khác (số điện thoại). Khi một thông báo cần được "đẩy", các APN sẽ tìm thấy kết nối phù hợp và gửi nó xuống kết nối đã mở đó. Vì vậy, các APN không cố gắng thiết lập kết nối với một thiết bị mà nó luôn là thiết bị mở kết nối đó. Một kết nối cho mỗi thiết bị.
Todd

Câu trả lời:


49

Nó là quá nhiều cho tôi để đưa vào một bình luận như vậy.

Từ tài liệu.

Dịch vụ Thông báo đẩy (APN) của Apple truyền thông báo đẩy đến các thiết bị có ứng dụng đã đăng ký để nhận các thông báo đó. Mỗi thiết bị thiết lập kết nối IP được công nhận và mã hóa với dịch vụ và nhận thông báo qua kết nối liên tục này. Các nhà cung cấp kết nối với APN thông qua một kênh ổn định và an toàn trong khi giám sát dữ liệu đến dành cho các ứng dụng khách của họ. Khi dữ liệu mới cho một ứng dụng đến, nhà cung cấp sẽ chuẩn bị và gửi thông báo qua kênh tới APN, thông báo này sẽ đẩy thông báo đến thiết bị đích ..

Tôi khuyên bạn nên đọc tài liệu để biết thêm thông tin cũng như cách sử dụng và cấu hình. Tất cả đều ở đó.

Đẩy thông báo


Cảm ơn bạn đã trả lời.
MightyMouse,

7
Vì vậy, Apple duy trì một IP tĩnh cho thiết bị của bạn?
CMCDragonkai

Tôi đã tự hỏi khi được hiểu rằng máy chủ của tôi phải gửi thông báo tới APNS CHO MỖI THIẾT BỊ MỤC TIÊU! :(
Vladimir

4
@CMCDragonkai Thiết bị thiết lập kết nối, không phải máy chủ.
Hitechcomputergeek

7
vì vậy các thiết bị duy trì một loại kết nối thăm dò / ổ cắm lâu dài luôn với dịch vụ APN? Nếu đúng như vậy thì dịch vụ APN xử lý nhiều kết nối như thế nào - Nếu một máy chủ có thể chứa 50k kết nối và luôn có 500 triệu người dùng, dịch vụ ít nhất cần 10000 máy chủ đúng không. Đây có phải là một kịch bản thực tế?
AV94

87

Mỗi thiết bị có thể được cập nhật dữ liệu bằng cách sử dụng mã thông báo thiết bị duy nhất của chúng. Hình ảnh này giải thích mọi thứ. .

nhập mô tả hình ảnh ở đây


Bạn có biết việc sử dụng Mã thông báo thiết bị là gì không? Nó có được sử dụng để mã hóa giao tiếp giữa máy chủ APNS và Ứng dụng hay ở nơi khác không?
Mugen

1
@Mugen: Mã thông báo thiết bị được APNS sử dụng để xác định thiết bị nào được phép chuyển tiếp tải trọng do nhà cung cấp gửi!
D4ttatraya

@Karan - Có sự phân biệt giữa thông báo dành cho người dùng (ví dụ: "Này người dùng, bạn có tin nhắn!") Và thông báo dành cho việc đánh thức ứng dụng và âm thầm yêu cầu ứng dụng thực hiện một số xử lý nền?
Howiecamp

@Howiecamp Nếu bạn đang sử dụng thông báo đẩy, bạn sẽ nhận được thông báo bất cứ khi nào nhận được thông báo nếu ứng dụng đang chạy. Ngoài ra, chi tiết thông báo hoạt động có thể truy cập được, khi người dùng nhấn vào thông báo từ trung tâm thông báo và khởi chạy ứng dụng. Trong thời gian này, bạn có thể thực hiện các quy trình mà bạn muốn.
Karan Alangat,

@KaranAlangat, Số lượng huy hiệu ở đây được xử lý như thế nào? Làm thế nào máy chủ biết về nó?
GvSharma,

22

Tôi đã tạo một đồ họa thông tin để giải thích quy trình làm việc của các thông báo đẩy. Hy vọng điều này là hữu ích.

nhập mô tả hình ảnh ở đây


20

Tổng quan về APN

Dịch vụ Thông báo đẩy của Apple (APN) là trung tâm của tính năng thông báo từ xa. Đây là một dịch vụ mạnh mẽ, an toàn và hiệu quả cao dành cho các nhà phát triển ứng dụng để truyền tải thông tin tới các thiết bị iOS (và gián tiếp, watchOS), tvOS và macOS.

Vào lần đầu tiên khởi chạy ứng dụng của bạn trên thiết bị của người dùng, hệ thống sẽ tự động thiết lập kết nối IP được công nhận, mã hóa và ổn định giữa ứng dụng của bạn và các APN. Kết nối này cho phép ứng dụng của bạn thực hiện thiết lập để cho phép ứng dụng nhận thông báo, như được giải thích trong Định cấu hình hỗ trợ thông báo từ xa.

Nửa còn lại của kết nối để gửi thông báo — kênh liên tục, an toàn giữa máy chủ của nhà cung cấp và các APN — yêu cầu cấu hình trong tài khoản nhà phát triển trực tuyến của bạn và sử dụng chứng chỉ mật mã do Apple cung cấp. Nhà cung cấp là một máy chủ mà bạn triển khai và quản lý, mà bạn định cấu hình để hoạt động với APN. Hình 1-1 cho thấy đường dẫn gửi thông báo từ xa.

Hình 1-1 Gửi thông báo từ xa từ nhà cung cấp đến ứng dụng

hình ảnh: ../Art/remote_notif_simple.jpg

Với việc thiết lập thông báo đẩy hoàn tất trên các nhà cung cấp và trong ứng dụng của bạn, các nhà cung cấp của bạn sau đó có thể gửi các yêu cầu thông báo tới APN. APN truyền tải trọng lượng thông báo tương ứng đến từng thiết bị được nhắm mục tiêu. Khi nhận được thông báo, hệ thống sẽ phân phối tải trọng đến ứng dụng thích hợp trên thiết bị và quản lý các tương tác với người dùng.

Nếu thông báo cho ứng dụng của bạn đến khi thiết bị được bật nguồn nhưng ứng dụng không chạy, hệ thống vẫn có thể hiển thị thông báo. Nếu thiết bị bị tắt nguồn khi APN gửi thông báo, APN sẽ giữ lại thông báo và thử lại sau (để biết chi tiết, hãy xem Chất lượng dịch vụ, Thông báo lưu trữ và chuyển tiếp và Hợp tác).

Trách nhiệm của Nhà cung cấp

Máy chủ của nhà cung cấp của bạn có các trách nhiệm sau khi tham gia với APN:

  • Nhận, thông qua APN, mã thông báo thiết bị ứng dụng cụ thể, duy nhất trên toàn cầu và dữ liệu có liên quan khác từ các phiên bản ứng dụng của bạn trên thiết bị của người dùng. Điều này cho phép nhà cung cấp biết về từng phiên bản đang chạy của ứng dụng của bạn.
  • Xác định, theo thiết kế của hệ thống thông báo của bạn, khi nào thông báo từ xa cần được gửi đến từng thiết bị.
  • Xây dựng và gửi các yêu cầu thông báo đến các APN, mỗi yêu cầu chứa một khối lượng thông báo và thông tin phân phối; APN sau đó thay mặt bạn gửi các thông báo tương ứng đến các thiết bị dự kiến.

Đối với mỗi yêu cầu thông báo từ xa mà nhà cung cấp gửi đi, nhà cung cấp phải:

  • Tạo một từ điển JSON chứa tải trọng của thông báo, như được mô tả trong Tạo tải trọng thông báo từ xa.
  • Thêm trọng tải, mã thông báo thiết bị duy nhất trên toàn cầu và thông tin phân phối khác vào yêu cầu HTTP / 2. Để biết thông tin về mã thông báo thiết bị, hãy xem Tin cậy kết nối APN với thiết bị và Mã thông báo thiết bị. Để biết thông tin về định dạng yêu cầu HTTP / 2, các phản hồi và lỗi có thể xảy ra từ APN, hãy xem Giao tiếp với APN.
  • Gửi yêu cầu HTTP / 2 tới APN, bao gồm thông tin đăng nhập mật mã dưới dạng mã thông báo hoặc chứng chỉ, qua một kênh ổn định, an toàn.
  • Thiết lập kênh an toàn này được mô tả trong Kiến trúc bảo mật.

Sử dụng nhiều nhà cung cấp

Hình 1-2 mô tả loại mạng ảo mà APN bật cho các thiết bị chạy ứng dụng của bạn. Để xử lý tải thông báo, bạn thường sẽ triển khai nhiều nhà cung cấp, mỗi nhà cung cấp có kết nối liên tục và an toàn với APN. Sau đó, mỗi nhà cung cấp có thể gửi các yêu cầu thông báo nhắm mục tiêu đến bất kỳ thiết bị nào mà nhà cung cấp có mã thông báo thiết bị hợp lệ.

Hình 1-2 Đẩy thông báo từ xa từ nhiều nhà cung cấp đến nhiều thiết bị

hình ảnh: ../Art/remote_notif_multiple.jpg

Chất lượng dịch vụ, thông báo lưu trữ và chuyển tiếp và liên kết

Dịch vụ Thông báo đẩy của Apple bao gồm thành phần Chất lượng Dịch vụ (QoS) thực hiện chức năng lưu trữ và chuyển tiếp. Nếu APN cố gắng gửi thông báo và thiết bị đích đang ngoại tuyến, thì APN sẽ lưu trữ thông báo trong một khoảng thời gian giới hạn và gửi khi thiết bị khả dụng trở lại. Thành phần này chỉ lưu trữ thông báo gần đây nhất cho mỗi thiết bị và mỗi ứng dụng. Nếu một thiết bị đang ngoại tuyến, việc gửi yêu cầu thông báo nhắm mục tiêu đến thiết bị đó sẽ khiến yêu cầu trước đó bị hủy. Nếu một thiết bị vẫn ngoại tuyến trong một thời gian dài, tất cả các thông báo được lưu trữ trong APN sẽ bị hủy.

Để cho phép kết hợp các thông báo tương tự, bạn có thể bao gồm một số nhận dạng thu gọn trong một yêu cầu thông báo. Thông thường, khi thiết bị trực tuyến, mỗi yêu cầu thông báo mà bạn gửi tới APN sẽ dẫn đến một thông báo được gửi đến thiết bị. Tuy nhiên, khi khóa apns-sập-id có trong tiêu đề yêu cầu HTTP / 2 của bạn, các APN sẽ kết hợp các yêu cầu có giá trị cho khóa đó giống nhau. Ví dụ: một dịch vụ tin tức gửi cùng một dòng tiêu đề hai lần có thể sử dụng cùng một giá trị nhận dạng thu gọn cho cả hai yêu cầu. Sau đó, APN sẽ kết hợp hai yêu cầu thành một thông báo duy nhất để gửi đến thiết bị. Để biết chi tiết về khóa apns-sập-id.

Kiến trúc bảo mật

APN thực thi xác thực và xác thực bằng mật mã từ đầu đến cuối bằng hai cấp độ tin cậy: độ tin cậy kết nối và độ tin cậy mã thông báo thiết bị.

Sự tin cậy kết nối hoạt động giữa các nhà cung cấp và APN cũng như giữa các APN và thiết bị.

Tin cậy mã thông báo thiết bị hoạt động đầu cuối cho mỗi thông báo từ xa. Nó đảm bảo rằng các thông báo chỉ được định tuyến giữa các điểm bắt đầu (nhà cung cấp) và điểm kết thúc (thiết bị) chính xác.

Mã thông báo thiết bị là một phiên bản NSData không rõ ràng có chứa một số nhận dạng duy nhất do Apple gán cho một ứng dụng cụ thể trên một thiết bị cụ thể. Chỉ APN mới có thể giải mã và đọc nội dung của mã thông báo thiết bị. Mỗi phiên bản ứng dụng nhận được mã thông báo thiết bị duy nhất của nó khi nó đăng ký với APN và sau đó phải chuyển tiếp mã thông báo đến nhà cung cấp của nó, như được mô tả trong Định cấu hình hỗ trợ thông báo từ xa. Nhà cung cấp phải bao gồm mã thông báo thiết bị trong mỗi yêu cầu thông báo đẩy nhắm mục tiêu đến thiết bị được liên kết; APN sử dụng mã thông báo thiết bị để đảm bảo thông báo chỉ được gửi tới tổ hợp ứng dụng-thiết bị duy nhất mà nó dự kiến.

APN có thể phát hành mã thông báo thiết bị mới vì nhiều lý do:

  • Người dùng cài đặt ứng dụng của bạn trên một thiết bị mới
  • Người dùng khôi phục thiết bị từ bản sao lưu
  • Người dùng cài đặt lại hệ điều hành
  • Các sự kiện khác do hệ thống xác định

Do đó, các ứng dụng phải yêu cầu mã thông báo thiết bị tại thời điểm khởi chạy, như được mô tả trong Tin cậy kết nối APN với thiết bị và Mã thông báo thiết bị. Để biết các ví dụ về mã, hãy xem Đăng ký để nhận thông báo từ xa.

Để thiết lập các phiên TLS dựa trên HTTP / 2 với APN, bạn phải đảm bảo rằng chứng chỉ gốc GeoTrust Global CA được cài đặt trên mỗi nhà cung cấp của bạn. Nếu nhà cung cấp đang chạy macOS, chứng chỉ gốc này nằm trong chuỗi khóa theo mặc định. Trên các hệ thống khác, chứng chỉ này có thể yêu cầu cài đặt rõ ràng. Bạn có thể tải xuống chứng chỉ này từ trang web GeoTrust Root Certificates. Đây là một liên kết trực tiếp đến chứng chỉ.

Hình 1-3 minh họa việc sử dụng API nhà cung cấp APN dựa trên HTTP / 2 để thiết lập sự tin cậy và sử dụng mã thông báo xác thực nhà cung cấp JWT để gửi thông báo.

Hình 1-3 Thiết lập và sử dụng độ tin cậy kết nối nhà cung cấp dựa trên mã thông báo

hình ảnh: ../Art/service_provider_ct.jpg

Như trong Hình 1-3, sự tin cậy của nhà cung cấp dựa trên mã thông báo hoạt động như sau:

Nhà cung cấp của bạn yêu cầu kết nối an toàn với các APN sử dụng bảo mật lớp truyền tải (TLS), được biểu thị dưới dạng mũi tên có nhãn “Khởi tạo TLS” trong hình.

Sau đó, APN cung cấp cho nhà cung cấp của bạn chứng chỉ APN, được thể hiện bằng mũi tên tiếp theo trong hình (có nhãn “Chứng chỉ APN”), sau đó nhà cung cấp của bạn sẽ xác thực.

Tại thời điểm này, độ tin cậy kết nối được thiết lập và máy chủ nhà cung cấp của bạn được kích hoạt để gửi các yêu cầu thông báo đẩy từ xa dựa trên mã thông báo tới APN. Mỗi yêu cầu thông báo mà nhà cung cấp của bạn gửi phải đi kèm với mã xác thực JWT, được thể hiện trong hình dưới dạng mũi tên có nhãn “Đẩy thông báo”.

APN trả lời mỗi lần đẩy, được biểu diễn trong hình dưới dạng mũi tên có nhãn “phản hồi HTTP / 2”.

Để biết chi tiết cụ thể về các phản hồi mà nhà cung cấp của bạn có thể nhận được cho bước này, hãy xem Phản hồi HTTP / 2 từ APN.

Hình 1-4 minh họa việc sử dụng chứng chỉ SSL do Apple cấp để thiết lập sự tin cậy giữa nhà cung cấp và các APN. Không giống như Hình 1-3, hình này không hiển thị thông báo mà chỉ dừng lại ở việc thiết lập kết nối Bảo mật tầng truyền tải (TLS). Trong lược đồ tin cậy dựa trên chứng chỉ, các yêu cầu thông báo đẩy không được xác thực nhưng chúng được xác thực bằng cách sử dụng mã thông báo thiết bị đi kèm.

Hình 1-4 Thiết lập độ tin cậy kết nối nhà cung cấp dựa trên chứng chỉ

hình ảnh: ../Art/service_provider_ct_certificate_2x.png

Như được minh họa trong Hình 1-4, sự tin cậy của nhà cung cấp đến APN dựa trên chứng chỉ hoạt động như sau:

Nhà cung cấp của bạn yêu cầu kết nối an toàn với các APN sử dụng bảo mật lớp truyền tải (TLS), được biểu thị dưới dạng mũi tên có nhãn “Khởi tạo TLS” trong hình.

Sau đó, APN cung cấp cho nhà cung cấp của bạn chứng chỉ APN, được thể hiện bằng mũi tên tiếp theo trong hình (có nhãn “Chứng chỉ APN”), sau đó nhà cung cấp của bạn sẽ xác thực.

Sau đó, nhà cung cấp của bạn phải gửi lại chứng chỉ nhà cung cấp do Apple cung cấp (chứng chỉ mà bạn đã lấy trước đó từ tài khoản nhà phát triển trực tuyến của mình, như được giải thích trong “Tạo chứng chỉ SSL máy khách APN chung” trong Trợ giúp Xcode) trở lại APN, được biểu thị dưới dạng mũi tên có nhãn “Nhà cung cấp chứng chỉ."

Sau đó, APN sẽ xác thực chứng chỉ nhà cung cấp của bạn, do đó xác nhận rằng yêu cầu kết nối bắt nguồn từ một nhà cung cấp hợp pháp và thiết lập kết nối TLS của bạn.

Tại thời điểm này, độ tin cậy kết nối được thiết lập và máy chủ nhà cung cấp của bạn được kích hoạt để gửi yêu cầu thông báo đẩy từ xa dựa trên chứng chỉ tới APN.

Tin cậy kết nối APN với thiết bị và Mã thông báo thiết bị

Sự tin cậy giữa các APN và mỗi thiết bị được thiết lập tự động mà không có sự tham gia của ứng dụng của bạn, như được mô tả trong phần này.

Mỗi thiết bị có một chứng chỉ mật mã và một khóa mật mã riêng, được cung cấp bởi hệ điều hành khi kích hoạt thiết bị ban đầu và được lưu trữ trong chuỗi khóa của thiết bị. Trong quá trình kích hoạt, các APN xác thực và xác nhận kết nối với thiết bị, dựa trên chứng chỉ và khóa, như trong Hình 6-5.

Hình 1-5 Thiết lập độ tin cậy kết nối giữa một thiết bị và các APN

hình ảnh: ../Art/service_device_ct.jpg

Như trong Hình 1-5, tin cậy APN với thiết bị hoạt động như sau:

  • Thương lượng tin cậy bắt đầu khi thiết bị bắt đầu kết nối TLS với APN, như thể hiện trong mũi tên trên cùng trong hình.
  • APN trả về chứng chỉ APN cho thiết bị.
  • Hệ điều hành xác thực chứng chỉ này và sau đó, như được hiển thị trong mũi tên “Chứng chỉ thiết bị”, gửi chứng chỉ thiết bị tới APN.
  • Cuối cùng, như được chỉ ra bởi mũi tên dưới cùng trong hình, APN xác thực chứng chỉ thiết bị, thiết lập sự tin cậy.
  • Với kết nối TLS được thiết lập giữa APN và thiết bị, các ứng dụng trên thiết bị có thể đăng ký với APN để nhận mã thông báo thiết bị dành riêng cho ứng dụng của chúng cho các thông báo từ xa. Để biết chi tiết và ví dụ về mã, hãy xem Đăng ký nhận thông báo từ xa trong cấu hình hỗ trợ thông báo từ xa.

Sau khi nhận được mã thông báo thiết bị, một ứng dụng phải kết nối với nhà cung cấp được liên kết của ứng dụng và chuyển tiếp mã thông báo đó. Bước này là cần thiết vì nhà cung cấp phải bao gồm mã thông báo thiết bị sau đó khi nó gửi yêu cầu thông báo đến APN, nhắm mục tiêu thiết bị. Mã bạn viết để chuyển tiếp mã thông báo cũng được hiển thị trong Đăng ký để nhận thông báo từ xa.

Cho dù người dùng đang kích hoạt thiết bị lần đầu tiên hay APN đã phát hành mã thông báo thiết bị mới, thì quá trình này cũng tương tự như vậy và được thể hiện trong Hình 6-6.

Hình 1-6 Quản lý mã thông báo thiết bị

hình ảnh: ../Art/token_generation.jpg

Việc lấy và xử lý mã thông báo thiết bị dành riêng cho ứng dụng hoạt động như sau:

Ứng dụng của bạn đăng ký với APN để nhận thông báo từ xa, như được hiển thị trong mũi tên trên cùng. Nếu ứng dụng đã được đăng ký và mã thông báo thiết bị dành riêng cho ứng dụng không thay đổi, hệ thống sẽ nhanh chóng trả lại mã thông báo hiện có cho ứng dụng và quá trình này chuyển sang bước 4.

Khi cần mã thông báo thiết bị mới, APN sẽ tạo một mã thông báo bằng thông tin có trong chứng chỉ của thiết bị. Nó mã hóa mã thông báo bằng cách sử dụng khóa mã thông báo và trả nó vào thiết bị, như được hiển thị ở giữa, mũi tên trỏ sang phải.

Hệ thống gửi lại mã thông báo thiết bị cho ứng dụng của bạn bằng cách gọi ứng dụng của bạn: didRegisterForRemoteNotificationsWithDeviceToken: phương thức ủy quyền.

Khi nhận được mã thông báo, ứng dụng của bạn (trong phương thức ủy quyền) phải chuyển tiếp nó đến nhà cung cấp của bạn ở định dạng nhị phân hoặc thập lục phân. Nhà cung cấp của bạn không thể gửi thông báo đến thiết bị mà không có mã thông báo này. Để biết chi tiết, hãy xem Đăng ký nhận thông báo từ xa trong cấu hình hỗ trợ thông báo từ xa.

QUAN TRỌNG

Mã thông báo thiết bị APN có độ dài thay đổi. Đừng mã hóa kích thước của chúng.

Khi nhà cung cấp của bạn gửi một yêu cầu thông báo đẩy tới APN, nó sẽ bao gồm một mã thông báo thiết bị xác định sự kết hợp thiết bị-ứng dụng duy nhất. Bước này được hiển thị trong mũi tên “Token, Payload” giữa nhà cung cấp và các APN trong Hình 6-7. APN giải mã mã thông báo để đảm bảo tính hợp lệ của yêu cầu và xác định thiết bị mục tiêu. Nếu APN xác định rằng người gửi và người nhận là hợp pháp, thì APN sẽ gửi thông báo đến thiết bị được xác định.

Hình 1-7 Đường dẫn thông báo từ xa từ nhà cung cấp đến thiết bị

hình ảnh: ../Art/token_trust.jpg

Sau khi thiết bị nhận được thông báo (và sau bước cuối cùng được hiển thị trong Hình 1-7), hệ thống sẽ chuyển tiếp thông báo từ xa đến ứng dụng của bạn.

Tham khảo: Dịch vụ thông báo đẩy của Apple

Bây giờ, hãy xem tại đây để hiểu quy trình kỹ thuật: Làm thế nào để triển khai Dịch vụ Thông báo Đẩy của Apple trên Ứng dụng iOS?


7
Haha, bạn vừa dán toàn bộ mục Apple Docs vào SO!
Matt Mc

@MattMc - Yea, tôi mới làm quen với SO, khi tôi đăng câu trả lời này và tại thời điểm đó tôi đã đăng một liên kết đến APNS nhưng một liên kết không được coi là câu trả lời trên SO, vì vậy tôi đã làm điều này .... :)
Krunal

1
Nó thực sự đúng, tốt hơn nhiều so với câu trả lời chỉ là một liên kết;)
Matt Mc

14

Thiết bị không tiếp tục thăm dò máy chủ cho các thông báo đẩy.

Để đơn giản, hãy coi iPhone được kết nối với internet. Khi kết nối với internet, iPhone thiết lập kết nối với máy chủ Apple Push Notifications kết nối này là kết nối mở, có nghĩa là dữ liệu có thể được chuyển đến iPhone từ máy chủ tại thời điểm dữ liệu đến máy chủ.

Apple không sử dụng giao thức HTTP cho Thông báo đẩy nhưng nếu bạn hiểu Giao thức HTTP thì nó gần như là một phương pháp tương tự.

http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push


Họ sử dụng gì nếu không phải http?
Howiecamp

2

Có một sự tán dương thực sự tốt về thông báo đẩy trong bài viết này .

Trong iOS, các ứng dụng không thể hoạt động nhiều trong nền. Các ứng dụng chỉ được phép thực hiện một số hoạt động giới hạn để tiết kiệm pin.

Nhưng điều gì sẽ xảy ra nếu điều gì đó thú vị xảy ra và bạn muốn cho người dùng biết về điều này, ngay cả khi họ hiện không sử dụng ứng dụng của bạn?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.