2015-06-25 22 views
5

Tôi đang tìm hiểu cách triển khai GCM cả từ phía máy khách (Android) và từ phía máy chủ (ASP.NET). Tôi đã dành một chút thời gian để đọc toàn bộ tài liệu google liên quan đến GCM và tôi cũng đã thử mẫu mà họ đã cung cấp. Vì tôi cần tích hợp GCM trong một ứng dụng đã tồn tại, tôi muốn biết một số nội dung cụ thể.Nhắn tin qua đám mây của Google - Nhiều tài khoản nhiều thiết bị

Như tôi đã nhận, id đăng ký là mã thông báo gắn ứng dụng trên một thiết bị cụ thể với dịch vụ GCM và máy chủ ứng dụng; vì vậy, chương trình phụ trợ có thể gửi tin nhắn hạ lưu trực tiếp đến thiết bị đó.

Trong trường hợp của mình, tôi có thể có nhiều người dùng có thể sử dụng ứng dụng trên cùng một thiết bị, điều đó có nghĩa là họ cần đăng nhập trong ứng dụng và họ có tài khoản trên cơ sở dữ liệu ở phía máy chủ. Tôi có cần lưu trữ một id đăng ký khác nhau cho mỗi người dùng trên thiết bị đó không? Hoặc vẫn là id đăng ký chỉ đề cập đến ứng dụng?

Và điều gì về cùng một kịch bản nhưng được phân phối trên nhiều thiết bị, bởi vì người dùng có thể có nhiều thiết bị?

Xin cảm ơn trước.

Trả lời

0

này liên quan rất nhiều đến bối cảnh của ứng dụng của bạn và những gì bạn muốn làm gì với thông báo

Có một ID đăng ký cho mỗi thiết bị sẽ ổn.

Tôi quản lý nhiều người dùng của mình bằng cách sử dụng thẻ đăng ký do máy chủ của tôi xử lý.

Vì vậy, hãy lấy tình huống nếu bạn có một ứng dụng thể thao:

dùng A & Người dùng B cổ phiếu cùng một thiết bị. Mỗi người dùng đăng ký một thẻ.

User A is subscribed to two tags (Basketball & Football) 

User B is subscribed to two tags (Tennis & Basketball) 

Khi người dùng A đăng xuất, bạn xóa các thẻ được liên kết với người dùng đó và khi người dùng B đăng nhập bạn tìm thẻ của họ.

Máy chủ của bạn biết thông báo để gửi tới thiết bị dựa trên các thẻ mà người dùng đã đăng ký.

Nhiều tình huống thiết bị:

Cũng vậy, khi người dùng của bạn đăng nhập Khi bạn nhận được thẻ của họ. Thiết bị cũng có mã thông báo riêng từ GCM.

+0

Ok, tôi đã hiểu rõ vấn đề của bạn. Tôi cũng nghĩ rằng nó chỉ có thể được xử lý bởi máy chủ. Trong cơ sở dữ liệu, tôi có thể lưu trữ mối quan hệ giữa người dùng và id đăng ký, có trường đặt thiết bị đang hoạt động hoặc không hoạt động cho một người dùng cụ thể. Vì vậy, khi máy chủ cần gửi một thông điệp hạ lưu tới một người dùng cụ thể, nó sẽ truy xuất tất cả các id đăng ký hoạt động và liên quan và gửi thông báo đến tất cả chúng trong multicast. Nó có thể là? –

+0

Điều này làm phức tạp nhiều thứ hơn, tại sao xử lý id cơ sở dữ liệu của bạn cục bộ? Nếu người dùng xóa tất cả dữ liệu thì bạn đã mất dữ liệu cho nhiều người dùng – AndroidEnthusiast

+0

Ý của bạn là gì với _if người dùng xóa tất cả dữ liệu_? Máy chủ sẽ lưu trữ tất cả các id đăng ký được gửi đến nó và nó sẽ tạo ra các mối quan hệ dựa trên các tài khoản. Nó có thể được, như đã nói trong câu trả lời khác, rằng khi người dùng khác đăng nhập vào ứng dụng, thông tin phải được gửi đến máy chủ để cập nhật những người được liên kết với một regID cụ thể. –

0

Id đăng ký là id của ứng dụng, ID này có thể thay đổi nếu phiên bản ứng dụng được cập nhật. Thông báo đẩy của bạn sẽ được gửi trên thiết bị với ứng dụng của bạn, bất kể tài khoản người dùng. Vì vậy, mọi người dùng trên mọi thiết bị sẽ nhận được thông báo của bạn, bạn chỉ được lưu trữ một id tái phân bổ cho mỗi thiết bị.

+0

Ok, nhưng nếu tôi chỉ cần gửi thông báo cho một người dùng cụ thể? Trong tài liệu cũng được báo cáo rằng "_ Yêu cầu đến máy chủ của bạn phải được xác thực nếu ứng dụng của bạn đang sử dụng tài khoản._" –

+0

Sau đó, bạn phải lưu trữ người dùng hiện tại và đó là id đăng ký, nơi người dùng đăng nhập. Tình huống với một thiết bị và nhiều người dùng : nếu người dùng mới đăng nhập, thiết bị gửi thông tin đến máy chủ, người dùng này có id đăng ký này Người dùng trước đó có id đăng ký này phải bị xóa. Nếu người dùng sử dụng nhiều thiết bị - db phải lưu trữ từng id đăng ký. Và bạn sẽ gửi push đến id reg đã biết, phù hợp với người dùng của bạn. – Jane

+0

Theo đề xuất của bạn, tốt hơn là xóa mối quan hệ giữa người dùng và regID khi người dùng khác đăng nhập vào ứng dụng, phải không? –

0

Đối với nhiều người dùng: Nếu thư của bạn là người dùng cụ thể, bạn sẽ muốn truy xuất mã thông báo của người dùng và đăng ký mã thông báo chỉ khi họ đăng nhập. Khi bạn chuyển người dùng xóa/hủy đăng ký mã thông báo trước đó, sau đó lưu/đăng ký mã thông báo của người dùng mới.

Bạn không nên làm điều này nếu bạn có nhiều người dùng trên mỗi thiết bị, nhưng khi người dùng đăng xuất. Điều này sẽ ngăn các thông báo cụ thể cho người dùng được hiển thị vào sai thời điểm cho người dùng sai.

Đối với nhiều thiết bị: có vẻ như bạn đang tìm kiếm Device Group Messaging.

Với nhắn tin nhóm thiết bị, máy chủ ứng dụng có thể gửi một tin nhắn tới nhiều ứng dụng chạy trên thiết bị thuộc một nhóm. Thông thường, "nhóm" đề cập đến một tập hợp các thiết bị khác nhau thuộc về một người dùng.

Điều này cũng tốt đẹp vì số collapse_key. Khi một trong các thiết bị trên cùng một tài khoản mở một thông báo, nó sẽ loại bỏ thông báo trên các thiết bị khác ..

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