2013-11-24 4 views
1

Я новичок в Android и пытаюсь реализовать некоторые приложения, используя Google Cloud Messaging. Я изначально настроил одно приложение и теперь разделил мое приложение на два (сервер и клиент).Пакет приемника не найден, не регистрируется приложение

Мои намерения GCM работали, но когда я разделил свое приложение, я разделил пакеты вверх. Моя старая заявка была <base.package>, и теперь эти две цифры: <base.package>.client и <base.package>.server.

Теперь на моем клиентского приложения (который получает радиопередачу), в моих журнальных файлах я вижу:

11-24 11:24:47.978: W/GCM/DMM(14909): broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=<base.package> (has extras) } 

11-24 11:24:47.978: W/GCM/DMM(14909): Receiver package not found, unregister application <base.package> sender <project.id> 

Мой манифест следующим образом:

<!-- Needed for the GCM messaging service --> 
<permission 
    android:name="<base.package>.client.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

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


     <!-- Needed to receive GCM broadcasts --> 
    <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="<base.package>.client" /> 
     </intent-filter> 
    </receiver> 

    <service android:name=".GCMIntentService" > 
    </service> 

Так выглядит то, что есть случилось, моя старая заявка с <base.package> не позволяет моему новому приложению зарегистрировать <base.package>.client? Это происходит на стороне сервера Google или как-то в моем проекте Eclipse? Как я могу его очистить?

У меня есть чувство, что я мог бы просто создать новый проект консольного проекта Google и начать с нуля, с новым проектом ID, но я думаю, я бы не учиться вообще таким образом :-)

ответ

0

Btw вы можете начать с нуля, но это не обязательно, как если бы просто создать новый проект консоли с именем пакета .client и использовать этот идентификатор проекта, и это сделает работу ...

+0

Итак, вы говорите, когда вы регистрируете GCM в своем манифесте, как я, он постоянно зарегистрирован в сервисе googles? Невозможно это очистить? В моем манифесте я ничего не показываю в своем конкретном идентификаторе проекта, так как Google знает только пакет? – user1871035

0

Вы включили только часть соответствующих деклараций манифеста в свой вопрос , В верхней части вашего манифеста вы должны иметь <permission> и <uses-permission> объявления, содержащие <base.package>.permission. Вы должны изменить их на <base.package>.client.permission.

+0

К сожалению, это не проблема. Я забыл упомянуть в своем первом посте, но у меня были и эти изменения. Я просто добавил их в свой манифест выше, чтобы показать, что у меня было, что НЕ работает. – user1871035

+0

@ user1871035 Возможно ли, что на вашем сервере вы отправляете в уведомлении необязательный параметр 'limited_package_name'? Кроме того, '' base.package> .client' является основным пакетом вашего нового приложения, как определено в верхней части манифеста? – Eran

+0

Мне нужно будет проверить имя limited_package_name. Вы говорите, что это на самом деле, чтобы отправить сообщение GCM в код Java. Если это так, я на 99% уверен, что не устанавливаю это поле. Чтобы ответить на ваш второй вопрос, да, базовый пакет, определенный в верхней части моего манифеста, определяется как тот же, .client. Спасибо за вашу помощь, Эран. – user1871035

Смежные вопросы