не удалось получить доступ к WakefulBroadcastReceiver, который присутствует во внешней библиотеке

Я делаю push-уведомление с помощью GCM, написанного в SDK, разработчику необходимо добавить мой SDK в качестве проекта библиотеки, мой SDK использует контекст от разработчика и создает идентификатор регистрации, но когда я отправляю с сервера, используя идентификатор, я могу не получать никаких уведомлений, на самом деле мой класс получателя не вызывается

Файл манифеста в SDK имеет

   <receiver
        android:name=".GcmBroadcastReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <!-- Receives the actual messages. -->
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.mysdk" />
        </intent-filter>
    </receiver>
    <service android:name=".GcmIntentService" /> 

разрешение имеет

  <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" />
 <permission
    android:name="com.mysdk.permission.C2D_MESSAGE"
    />

<uses-permission android:name="com.mysdk.permission.C2D_MESSAGE" />

Манифест в приложении с моим SDK в виде файла библиотеки

      <receiver
        android:name="com.mysdk.GcmBroadcastReceiver" 
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>

            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.mysdk" />
        </intent-filter>
    </receiver>
    <service android:name="com.mysdk.GcmIntentService" />

разрешение имеет

  <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" />
<permission
    android:name="com.mysdk.permission.C2D_MESSAGE"
    />

<uses-permission android:name="com.mysdk.permission.C2D_MESSAGE" />

может ли кто-нибудь предположить, что пошло не так, может быть, это возможно, т.е. отправка уведомления из SDK




Ответы (1)


Приложение, использующее ваш SDK, не должно использовать com.mysdk для разрешений GCM и для категории фильтра намерения приемника вещания. Вместо этого он должен использовать собственное имя пакета.

Ниже я отметил изменения, которые вы должны внести в манифест вашего приложения:

<receiver
    android:name="com.mysdk.GcmBroadcastReceiver" 
    android:exported="true"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>

        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <category android:name="CHANGE_TO_YOUR_APPS_PACKAGE_NAME" />
    </intent-filter>
</receiver>

<service android:name="com.mysdk.GcmIntentService" />

<permission android:name="CHANGE_TO_YOUR_APPS_PACKAGE_NAME.permission.C2D_MESSAGE"/>

<uses-permission android:name="CHANGE_TO_YOUR_APPS_PACKAGE_NAME.permission.C2D_MESSAGE" />
person Eran    schedule 24.09.2013
comment
Большое спасибо, Эран, ты спас мне голову!! - person ganesh; 25.09.2013