2014-01-21 3 views
0

Я пытаюсь отправить push-сообщения на свое устройство Android с помощью Amazon SNS Я не смог создать конечную точку с помощью ключа Android API, но мне удалось создать с помощью ключа API браузера (который запутывается) Затем, когда я пытаюсь отправить push-сообщение, я получаю сообщение об ошибке «Разрешение отказа: получение Intent {act = com.google.android.c2dm.intent.RECEIVE cat = [com.example.androidpush] flg = 0x10 (имеет статистов)} для com.example.androidpush требует com.example.androidpush.permission.C2D_MESSAGE за счет отправителя com.google.android.gsf (UID 10054)»Amazon SNS GCM Push для Android

Мой файл манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.androidpush" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18"/> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="com.example.androidpush.permission.C2D_MESSAGE" /> 




    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.androidpush.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name=".GcmBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <category android:name="com.example.androidpush" /> 
      </intent-filter> 
     </receiver> 
     <service android:name=".GcmIntentService" /> 
     <permission android:name="com.example.androidpush.permission.C2D_MESSAGE" android:protectionLevel="signature"/> 

    <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 


    </application> 

</manifest> 

ответ

1

У вас все еще есть проблема? надеюсь, что вы работаете. В любом случае это может быть напоминанием о закрытии этого вопроса.

Я считаю, что проблема связана с определением приемника,

во-первых, .GcmBroadcastReceiver, это неправильно, должно быть [com.google.android.gcm.GcmBroadcastReceiver]. Это должно решить вашу проблему, но я думаю, что ваша регистрация не удастся, так как вам также необходимо добавить к вашему ресиверу действие [com.google.android.c2dm.intent.REGISTRATION].

 <receiver 
     android:name="com.google.android.gcm.GCMBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

     <category android:name="com.example.androidpush" /> 
     </intent-filter> 
     </receiver> 
Смежные вопросы