Tôi đang cố gắng để ứng dụng của mình chạy với Google Cloud Messaging. Tôi đang theo dõi Ứng dụng Quickstart của Google Cloud Messaging có thể tìm thấy tại đây trên github.Quyền được ủy quyền là gì? Không thể tìm thấy gcm_defaultSenderId trong ứng dụng của riêng
Trong ứng dụng khởi động nhanh của họ tại một thời điểm nào đó, chúng tôi yêu cầu dịch vụ Nhắn tin qua đám mây của Google có mã thông báo đăng ký để ứng dụng của chúng tôi có thể nói chuyện với đám mây.
Tôi thấy dòng mã này:
RegistrationIntentService.java::onHandleIntent(Intent intent):
InstanceID instanceID = InstanceID.getInstance(this);
String gcmRegistrationToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Phần rằng là khó hiểu với tôi là giá trị này: R.string.gcm_defaultSenderId
Nó được định nghĩa trong ứng dụng QuickStart của họ, nhưng nó sẽ tự động tạo ra.
Làm cách nào để ứng dụng của tôi tạo ra giá trị đó?
Tôi nhìn lên các tài liệu cho InstanceID.getToken đó là heregetToken(java.lang.String, java.lang.String)
InstanceID.getoken
trả về một mã thông báo ủy quyền cho một thực thể (ví dụ: dịch vụ điện toán đám mây) để thực hiện một hành động thay mặt cho các ứng dụng xác định bởi Instance ID. Điều này tương tự như mã thông báo OAuth2
ngoại trừ, nó áp dụng cho phiên bản ứng dụng thay vì người dùng.
Đầu mục chức năng trông giống như:
public String getToken (String authorizedEntity, String scope)
tôi thấy rằng arg đầu tiên mà getToken
muốn là String authorizedEntity
. vậy, chuỗi AuthorEntity này được cho là gì?
Nó xác định rõ ràng trường hợp của ứng dụng đưa ra yêu cầu, nhưng tôi phải tạo ra nó như thế nào? Trong ứng dụng QuickStart, tôi không thể tìm thấy nó quy định tại res/value/strings.xml
, tôi chỉ có thể tìm thấy nó được định nghĩa trong R.java và app/build/generated/res/google-services/debug/values/values.xml
Dường như:
<resources>
<string name="gcm_defaultSenderId">175643285</string>
</resources>
Có chỉ là một chuỗi trong đó và tệp đó được chôn sâu trong cấu trúc dự án. Tôi không thể tìm thấy bất kỳ nơi nào trong mã nơi số này gcm_defaultSenderId
đang được tạo theo chương trình.
Tôi bối rối bởi vì, làm thế nào tôi có thể biết chuỗi đó đã có? Tôi không bao giờ xác định chuỗi đó và googling cho "không thể giải quyết gcm_DefaultSenderId
" không cho kết quả nào. Tôi đang cố gắng triển khai Google Cloud Messaging trong ứng dụng của riêng mình, vì vậy tất nhiên ứng dụng của riêng tôi sẽ không tự động biết để tạo chuỗi đó. Làm thế nào tôi phải làm cho số id đó?
Đây là lý do tại sao tôi nghĩ rằng điều quan trọng là tôi hiểu những gì chuỗi authorizedEntity này mà InstanceID.getToken muốn, để tôi có thể tạo ra một cách chính xác để cung cấp cho getToken. Có lẽ ý tưởng của tôi là hoàn toàn sai, có lẽ tôi không phải tạo ra gcm_defaultSenderId, nhưng tôi biết rằng tôi không được phép thay đổi R.java, và tệp values.xml
cũng nằm trong thư mục "được tạo".
Trợ giúp xin vui lòng? Nếu tôi tìm thấy câu trả lời trong các tìm kiếm của mình, tôi sẽ đăng câu trả lời một cách hạnh phúc.Bất kỳ trợ giúp nào được đánh giá cao, lưu ý: dự án của tôi được xuất khẩu sang Gradle từ Eclipse, do đó nó vẫn sẽ có cấu trúc thư mục/dự án Eclipse, không gây ra bất kỳ sự cố nào, nhưng tệp values.xml
ở một nơi khác.
ID người gửi là từ Bảng điều khiển dành cho nhà phát triển, nhưng nếu bạn theo dõi nhanh, nó được tạo cho bạn trong tệp google-services.json mà bạn đã sao chép vào thư mục dự án của mình. – Koh
Bạn có thể thả id R.string và nhận giá trị theo tên: http://stackoverflow.com/a/38995785/606351 – Vaiden