2012-07-21 35 views
43

Tôi biết rằng đăng ký C2DM hết hạn và bạn phải làm mới định kỳ ID đăng ký. Đây có phải là trường hợp với GCM không? bằng cách xem đoạn mã sau trên hướng dẫn GCM của Android (được hiển thị bên dưới), có vẻ như bạn chỉ làm điều đó một lần và không cần phải làm mới, nhưng tôi không thấy rõ ràng ở bất kỳ đâu, vì vậy tôi chỉ muốn kiểm tra.Hết hạn đăng ký GCM của bạn?

final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    GCMRegistrar.register(this, SENDER_ID); 
} else { 
    Log.v(TAG, "Already registered"); 
} 
+0

tương tự: http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on-android – trante

Trả lời

41

EDIT: Câu trả lời này là cách hiểu của NGÀY, tôi có ý tưởng gì hành vi hiện tại LÀ


Tôi tìm thấy câu trả lời bản thân mình. Bạn không cần phải đăng ký lại mọi lúc, just once according to the example in the docs.

Ngoài ra, không giống như các phiên bản trước của GCM và C2DM, chính Google không làm mới đăng ký riêng của mình bây giờ: một khi bạn có id đăng ký từ việc đăng ký ban đầu bạn là tốt để đi, trừ cho một trường hợp : bạn vẫn cần phải đăng ký lại khi nâng cấp sử dụng lên phiên bản mới (trường hợp này cũng được xử lý trong ví dụ trong liên kết ở trên):

khi một ứng dụng được cập nhật, nó sẽ làm mất hiệu lực của nó hiện ID đăng ký, vì nó không được đảm bảo để làm việc với phiên bản mới. Vì không có phương pháp vòng đời nào được gọi khi ứng dụng được cập nhật , cách tốt nhất để đạt được xác thực này là lưu trữ phiên bản ứng dụng hiện tại khi ID đăng ký được lưu trữ.

+0

Nhưng cách tạo id đăng ký mannn ????? –

+1

@AndroidKiller: đọc qua các tài liệu: http://developer.android.com/google/gcm/index.html –

+0

hey @MohamedHafez.Đoạn đầu tiên của bạn đến từ C2DM chứ không phải tài liệu GCM có nghĩa là (tôi tin) rằng nó không áp dụng cho GCM. Điều này làm cho câu trả lời của bạn một chút gây hiểu lầm. Thx – AndroidGecko

10

Tôi nghĩ rằng nó được làm mới sau cùng, có. Từ các tài liệu chính thức:

Một ID đăng ký hiện tại có thể hết hiệu lực trong một số kịch bản, bao gồm: Nếu ứng dụng bằng tay sẽ hủy đăng ký bằng cách phát hành một ý định com.google.android.c2dm.intent.UNREGISTER. Nếu ứng dụng được tự động hủy đăng ký, điều này có thể xảy ra (nhưng không được bảo đảm) nếu người dùng gỡ cài đặt ứng dụng. Nếu ID đăng ký hết hạn. Google có thể quyết định làm mới ID đăng ký. Đối với tất cả các trường hợp này, bạn nên xóa ID đăng ký này khỏi máy chủ của bên thứ ba và ngừng sử dụng nó để gửi tin nhắn. Xảy ra khi mã lỗi không được đăng ký.

Điều này có thể xảy ra trong một yêu cầu để GCM từ máy chủ của bên thứ 3 của bạn, mà trả về một phản ứng json với lỗi Khách Device.

Khi điều này xảy ra, bạn sẽ phải làm mới các id tương ứng.

http://developer.android.com/guide/google/gcm/gcm.html

+0

Vậy là nó lưu vào chỉ cần kiểm tra nếu thẻ có đã thay đổi trong 'RegistationIntentService' của tôi? Tôi có thể lưu trữ mã thông báo trong các tùy chọn được chia sẻ và kiểm tra mọi lúc để xem nó có thay đổi hay không. – Zapnologica

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