Tôi sắp triển khai C2DM cho ứng dụng của mình, nhưng tôi thấy documentation có chút khó hiểu về cách viết tệp kê khai.C2DM: Cách sử dụng quyền C2D_MESSAGE?
Các biểu hiện chứa mã ví dụ này:
<!-- Only this application can receive the messages and registration result -->
<permission android:name="com.example.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.example.myapp.permission.C2D_MESSAGE" />
này được giải thích như sau:.
applicationPackage +" .permission.C2D_MESSAGE ngăn chặn các ứng dụng khác từ việc đăng ký và nhận tin nhắn của ứng dụng
Nhưng chính xác điều này hoạt động như thế nào? Theo tôi hiểu, điều này tuyên bố sự cho phép và sau đó nhận được quyền đó cho phép ứng dụng của tôi. Nhưng chính xác thì quyền đó được thực thi ở đâu?
Mã được đăng ký là:
Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate
registrationIntent.putExtra("sender", emailOfSender);
startService(registrationIntent);
Làm thế nào có thể các dịch vụ mà nhận được registrationIntent biết sự cho phép để kiểm tra? Theo tôi hiểu (và sửa tôi nếu tôi sai ở đây), khi tuyên bố sự cho phép, tôi có thể đã chọn bất kỳ tên quyền nào trong không gian tên của tôi, ví dụ: com.example.myapp.permission.WHATEVER.
Hoặc là C2D_MESSAGE một số hằng số ma thuật mà tôi phải sử dụng?
Ngoài ra, các tài liệu nói rằng tôi phải thực hiện thu cho com.google.android.c2dm.intent.C2D_MESSAGE
và com.google.android.c2dm.intent.REGISTRATION
Intents. Nhưng Trong ví dụ mã, bộ lọc của người nhận chỉ chứa .intent.RECEIVE
và .intent.REGISTRATION
Ý định. Nơi đã làm C2D_MESSAGE
, và nó có một cái gì đó todo với câu hỏi của tôi ở trên?
Tôi hy vọng đây không phải là điều hiển nhiên, nhưng tôi không hiểu ... hãy giúp đỡ.
Vậy điều gì sẽ xảy ra nếu tôi không khai báo và yêu cầu quyền C2D_MESSAGE? Sau đó tôi sẽ không thể nhận bất kỳ chương trình phát sóng c2dm nào? Điều này có nghĩa là nhận xét trong khối mã đầu tiên của tôi thực sự nên đọc "đảm bảo chúng tôi có thể nhận các chương trình phát sóng c2dm _at all_" – user634618
Đánh giá từ tài liệu, nếu bạn không khai báo quyền đó, thì phần C2DM sẽ tìm BroadcastReceivers. xử lý ý định (và có sự cho phép) sẽ không tìm thấy bất kỳ BroadcastReceivers để thử, do đó, Broadcast sẽ không đi bất cứ nơi nào. Tôi chưa thử điều đó, nhưng thực sự rất đơn giản để thử. Tôi sẽ làm theo các ví dụ tài liệu đầu tiên để chắc chắn rằng bạn có tất cả mọi thứ làm việc, đầu tiên. – mbafford
Cảm ơn, tôi đã đọc tài liệu cho BroadcastReceiver một lần nữa và giờ đã hiểu nó. Những gì tôi đã không nhận thấy khi đọc nó lần đầu tiên là khi bắn một Intent phát sóng một cách rõ ràng có thể yêu cầu một sự cho phép. – user634618