2010-02-25 40 views
69

Tôi có hai ứng dụng trên cửa hàng iTunes - cả hai đều triển khai thông báo đẩy. Trong khi tôi đang thử nghiệm gửi thông báo đến các ứng dụng sản xuất này, tôi nhận thấy rằng một cú nhấn dành cho ứng dụng A có tiêu đề và đã mở ứng dụng B.Mã thông báo thiết bị APN có duy nhất cho từng ứng dụng riêng lẻ không?

Cả hai ứng dụng này đều được cài đặt trên cùng một điện thoại. Tôi nhìn vào bảng thiết bị của tôi và thấy rằng các thiết bị Tokens (và tất nhiên, ID thiết bị) được liệt kê cho cả hai ứng dụng đều giống nhau.

Theo yêu cầu, tôi đang sử dụng hai chứng chỉ khác nhau trên máy chủ - một chứng chỉ cho mỗi ứng dụng. Tôi loại giả định Token thiết bị hoặc chứng chỉ sẽ định tuyến thông điệp đến đúng ứng dụng nhưng rõ ràng nó không phải là.

Tôi có thể thấy trong NSLog rằng mã thông báo được gửi từ mỗi ứng dụng thực sự giống nhau.

Mã thông báo thiết bị có phải là duy nhất cho mỗi ứng dụng không? Nếu vậy, bất kỳ ý tưởng làm thế nào điện thoại thử nghiệm của tôi có thể gửi cùng một mã thông báo thiết bị cho cả hai ứng dụng cho máy chủ của tôi. Xin lưu ý rằng đây là hai ứng dụng hiện có trên cửa hàng ứng dụng.

Cảm ơn bạn đã trợ giúp!

+0

câu hỏi hay tôi đánh giá cao nó –

Trả lời

90

LƯU Ý: đây là một câu trả lời cũ đó là sự thật chỉ dành cho iOS < = 6. Xem user1641761's answer cho phương pháp hiện hành.

Đã tìm ra. Mã thông báo thiết bị KHÔNG độc đáo với ghép nối ứng dụng-điện thoại. Chúng chỉ dành riêng cho điện thoại. Nếu bạn có nhiều ứng dụng bằng cách nhấn trên cùng một điện thoại, tất cả chúng sẽ sử dụng cùng một Mã thông báo thiết bị. Chứng chỉ bạn sử dụng để gửi thông báo sẽ quyết định ứng dụng nào sẽ được chuyển đến.

+1

Cảm ơn cho câu hỏi và câu trả lời, đó là hữu ích để biết. 1 cho mỗi. Có nghĩa là điện thoại sẽ quyết định ứng dụng nào được nhắm mục tiêu bằng chứng chỉ máy chủ, như xác thực ý định của nhà phát triển. –

+3

Xin chào @Mups. Trong câu hỏi mở, bạn nói rằng: "Theo yêu cầu, tôi đang sử dụng hai chứng chỉ khác nhau trên máy chủ - mỗi chứng chỉ cho mỗi ứng dụng". Sau đó, trong câu trả lời của bạn, bạn nói: "Chứng chỉ bạn sử dụng để gửi thông báo sẽ quyết định ứng dụng sẽ chuyển đến" .... Vậy, tại sao nó không hoạt động? Tôi sắp triển khai một thiết lập tương tự cho chương trình phụ trợ của tôi và tôi muốn chắc chắn. Cảm ơn. – tompave

+0

@wonderingtomato Tôi đang mắc kẹt với cùng một vấn đề. Bất kỳ soln? – RickDavis

8

Điều đó nói rằng, hãy nhớ rằng Apple bảo lưu quyền thay đổi thiết bị APNToken khi chúng thấy phù hợp, do đó, không sử dụng nó để nhận dạng duy nhất một thiết bị/người dùng.

47

iOS 7 xử lý sự khác biệt này. Bây giờ nó là UNIQUE.

Xin vui lòng xem điểm 1 trong bài viết này:. http://urbanairship.com/blog/2013/10/03/how-ios-7-handles-push-differently

"Trước khi lên iOS 7, token thiết bị là như nhau trên tất cả các cài đặt ứng dụng trên một thiết bị cấp cho ứng dụng khác nhau trên điện thoại của bạn, cho dù Tap Tap Revenge hoặc USA Hôm nay, sẽ sử dụng cùng một địa chỉ, ví dụ: mã thông báo thiết bị, để định tuyến thông báo đẩy cho bạn. Thông tin bảo mật mà bạn ghép nối với thông báo sẽ đảm bảo nó được đưa đến đúng ứng dụng. và đảm bảo rằng mã thông báo thiết bị hiện khác nhau trong mỗi lượt cài đặt ứng dụng. Điều này giúp bảo vệ hơn nữa quyền riêng tư của người dùng bằng cách xóa một số nhận dạng cấp điện thoại khác. "

Xem thêm ios 7 device token is different for same device

+0

Câu trả lời này phải được đánh dấu là câu trả lời đúng. – noahandthewhale

16

Chia sẻ hiểu biết của tôi và vài câu trả lời từ Apple phát triển:

  • Device Mã
    • Device token là định danh duy nhất của thiết bị.
    • APN tạo mã thông báo thiết bị bằng chứng chỉ thiết bị duy nhất (có thể đang sử dụng hồ sơ cấp phép)
    • Mã thông báo thiết bị có thể bị thay đổi. Vì vậy, hãy đảm bảo bạn gửi mã thông báo thiết bị được cập nhật lên máy chủ của mình mỗi lần.
    • Mã thông báo thiết bị là CÙNG cho tất cả ứng dụng trên thiết bị.
    • Thiết bị cụ thể và không dành riêng cho từng ứng dụng.
    • Mã thông báo thiết bị có thể khác nhau đối với sandbox và sản xuất.
      • Dựa trên hồ sơ cấp phép (hộp cát hoặc sản xuất), APN có thể tạo mã thông báo thiết bị khác nhau cho hộp cát và sản xuất cho cùng một thiết bị.
    • Sau đó, cách thông báo đẩy được phân biệt trên thiết bị? Ứng dụng đó là gì?
      • Nó dựa trên số nhận dạng ứng dụng và chứng chỉ SSL được cài đặt trên máy chủ (sử dụng thông báo được đẩy tới máy chủ APN).
  • Tài liệu tham khảo
+1

Câu trả lời sai hoặc lỗi thời. Câu trả lời của bạn không còn hợp lệ theo tài liệu của apple nữa. Vui lòng tham khảo tài liệu tại đây https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html –

0

Bạn không thể sử dụng thẻ như một định danh duy nhất nhưng loại bỏ mã thông báo cũ sử dụng tiết kiệm trong keygen (sự giúp đỡ từ itunes) và xóa mã thông báo cũ và thêm mã thông báo mới vào cơ sở dữ liệu của bạn.

1

Mã thông báo thiết bị cho thông báo đẩy cụ thể cho từng ứng dụng. Không cụ thể cho thiết bị. nghĩa là mã thông báo thiết bị sẽ khác và duy nhất cho nhiều ứng dụng trong cùng một thiết bị.

Theo táo,

Bằng cách hỗ trợ thông báo từ xa mà bạn có thể cung cấp up-to-date thông tin cho người dùng của ứng dụng của bạn, ngay cả khi ứng dụng không chạy. Để có thể tiếp nhận và xử lý thông báo từ xa, ứng dụng của bạn phải:

  • Enable thông báo từ xa.

  • Đăng ký bằng dịch vụ Thông báo đẩy của Apple (APN) và nhận mã thông báo thiết bị dành riêng cho ứng dụng.

  • Gửi mã thông báo thiết bị đến máy chủ của nhà cung cấp thông báo của bạn.

  • Triển khai hỗ trợ xử lý các thông báo từ xa đến.

Mã thông báo thiết bị dành riêng cho ứng dụng là duy nhất toàn cầu và xác định một kết hợp thiết bị ứng dụng . Khi nhận được mã thông báo thiết bị từ các APN trong ứng dụng của bạn, bạn có trách nhiệm mở một kết nối mạng tới nhà cung cấp của mình. Bạn cũng có trách nhiệm, trong ứng dụng của mình, sau đó, hãy chuyển tiếp mã thông báo thiết bị cùng với bất kỳ dữ liệu nào khác có liên quan mà bạn muốn để gửi đến nhà cung cấp.Khi nhà cung cấp sau đó gửi yêu cầu thông báo từ từ xa đến APN, nó phải bao gồm mã thông báo thiết bị, dọc theo với trọng tải thông báo. Để biết thêm về điều này, hãy xem Tổng quan về APN.

Không bao giờ mã thông báo thiết bị bộ nhớ cache trong ứng dụng của bạn; thay vào đó, hãy lấy chúng từ hệ thống khi bạn cần chúng. APN phát hành mã thông báo thiết bị mới cho ứng dụng của bạn khi một số sự kiện nhất định xảy ra. Mã thông báo thiết bị được bảo đảm là khác nhau, ví dụ: khi người dùng khôi phục thiết bị từ bản sao lưu, khi người dùng cài đặt ứng dụng của bạn trên thiết bị mới và khi người dùng cài đặt lại hệ điều hành. Tìm nạp mã thông báo, thay vì dựa vào bộ nhớ cache, đảm bảo rằng bạn có mã thông báo thiết bị hiện tại cần thiết để nhà cung cấp của bạn liên lạc với APN. Khi bạn cố gắng tìm nạp mã thông báo thiết bị nhưng nó không thay đổi, phương thức tìm nạp sẽ trả lại nhanh chóng .

Bạn có thể tham khảo tài liệu táo đây Local and Remote Notification Programming Guide

Các vấn đề liên quan