-1

Ich las GCM Dokumente und eine Sache brachte mich dazu, diese Frage zu stellen: Warum muss ich das Berechtigungs-Tag in meinem Manifest definieren und dann die von mir definierte Berechtigung verwenden? HierWarum sollte ich ein Berechtigungs-Tag in meiner Android App für GCM definieren?

ist der Code:

<permission android:name="<your-package-name>.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 

<uses-permission android:name="<your-package-name>.permission.C2D_MESSAGE" /> 

Sollte nicht diese Berechtigung im Dienst App definiert werden und ich nur hinzufügen, uses-permission

Und wenn mit permission Tag benötigt wird, was die signature Ebene hier tut?

Ich definiere eine Erlaubnis und lass niemanden es benutzen, aber ich!

GCM

+1

Sie sind nicht ganz richtig. Berechtigungen auf Signaturebene können weiterhin vom Android-Betriebssystem verwendet werden. Und hier kommt diese Berechtigung ins Spiel - sie schützt den "BroadcastReceiver" oder "Service", den Sie zum Empfangen der GCM 'Intents' verwenden, so dass Sie absolut sicher sein können, dass Sie echte Nachrichten erhalten und keine andere App böswillige' Intent' sendet 'gemacht, um wie GCM Nachrichten auszusehen. –

Antwort

3

Die Erlaubnis Paketebene sind erforderlich, nur bestimmte Anwendung zu identifizieren, die Nachricht zuzustellen.

Von docs

Ihr + ".permission.C2D_MESSAGE" Erlaubnis andere Android-Anwendungen zu verhindern, dass die Registrierung und der Android-Anwendung Nachrichten zu empfangen. Die Erlaubnis Name muss genau Spiel dieses Muster-ansonsten die Android-Anwendung wird die Nachrichten nicht empfangen

Für z Betrachten Sie diese Berechtigungen sind wie Telefonnummer und Android ist das Gebäude. Es können zu viele Personen beim Aufbau einer Anrufverbindung im Gebäude sein, aber jeder Empfänger hat seine eigene eindeutige Telefonnummer, auf dieser Basis ist ein Anruf mit diesem bestimmten Empfänger verbunden.

Signaturniveau: Es ist zu bestätigen, dass die Anwendung signiert wird durch die auf dem System, das den gleichen SHA-1 Schlüssel hat, die Sie auf GCM Konsole verwendet. Die C2D Erlaubnis wird sofort erteilt, wenn dieses Kriterium übereinstimmt.

+1

Der Teil der Dokumentation, den du zitierst, ist vielleicht ein wenig irreführend. Die Berechtigung wird nicht so sehr verwendet, um die richtige App zu identifizieren, sondern um zu verhindern, dass andere Apps bösartige "Intents" senden, die wie tatsächliche GCM-Nachrichten aussehen, obwohl dies tatsächlich nicht der Fall ist. –

+0

Ja, ich stimme zu, es wird auch auf diese Weise funktionieren, wenn ich den Schlüssel zu sperren habe und andere nicht, dann kann ich nur ins Haus kommen (Nachricht erhalten) andere werden nicht, wie ich nur den Schlüssel und nur Ich kann ins Haus gehen und auf andere Weise sagen, das ist, andere Leute haben nicht den Schlüssel, damit sie nicht ins Haus gehen können –

+1

@PavneetSingh kann ich diese Art von Berechtigungen in meiner App verwenden? Ich meine, wenn ich eine App habe, die anderen Apps dient und diese anderen Apps nicht von mir signiert sind. aber sie gaben mir die SHA-1. Kann ich nur Apps bereitstellen, die SHA-1 kennen? oder einfach googeln? – sajad

Verwandte Themen