I have an application where I'm implementing Google Cloud Messaging notifications, but in a specific device the messages don't arrive. This device has the minimum requirements to use GCM (Android version 2.2, Play Store installed and an Google Account logged). In the log I see that the device is receiving the registration id and sending to the back-office where I have a list of devices registered.
My question is: Do I need to make extra configurations to make the device receive these notifications?
Here is the manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.testegcm"
android:versionCode="1"
android:versionName="1" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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.example.gcm.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
<application
android:name="TesteGCM"
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<receiver
android:name="br.com.testegcm.GcmBroadcastReceiver"
android:exported="true"
android:enabled="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="br.com.testegcm" />
</intent-filter>
</receiver>
<service android:name="br.com.testegcm.GcmIntentService" />
<activity
android:name="br.com.testegcm.Home"
android:screenOrientation="portrait"
android:label="#string/app_name"
android:theme="#style/notitle" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Change this :
<permission android:name="com.example.gcm.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
to :
<permission android:name="br.com.testegcm.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="br.com.testegcm.permission.C2D_MESSAGE" />
Add the same issue and i eventually i realized that i need to change in the manifest, the broadcast receiver package name from com.example.gcm to my package name :
<!-- Push notifcations-->
<receiver
android:name=".BroadcastRecivers.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.gcm"/>
</intent-filter>
</receiver>
To
<!-- Push notifcations-->
<receiver
android:name=".BroadcastRecivers.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="MY PACKAGE NAME"/>
</intent-filter>
</receiver>
No apart from Android version 2.2, Play Store app installed and an Google Account logged in no other configuration is needed, Now there are only two cases left
1) Either there is some ambiguity in your code.
2) or may be it is a device specific issue.
I had the very same problem.My code would work on nexus4(Kitkat) but would fail to get me a notification from the appln server(via gcm server).For versions less that 4.0.4 you should make sure that you have your google account setup on your device for gcm to work. I had google account on my phone but the mistake I made was that my Account and Sync settings in my galaxy ace was 'Off'.When I turned it ON and ran my code, i received the notification.
Please check the following solution. if still didn't work, let me know.
Add RECEIVE and REGISTRATION Intent in two different intent filters
<receiver
android:name=“<.GCM BroadcastReceiver Name>“ // Name of your BroadcastReceiver, define in code.
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=“<Package Name>" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name=“<Package Name>" />
</intent-filter>
</receiver>
<service android:name=“<.GCM IntentService Name>" /> // Name of your IntentService, define in code.
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Add RECEIVE and REGISTRATION Intent in two different intent filters as shown as above otherwise it won’t work for some devices(Ex. HTC).
Related
I made an android app according to this guide: http://docs.oracle.com/cloud/latest/marketingcs_gs/OMCFA/android/step-by-step/
I have used standard xml configuration. I am able to register my device into the PushIO and this is my log:
D/pushio﹕ Google Play Services found, using GCM for notification service.
D/pushio﹕ mRegisteringNotificationPreferences: null,mScheduledNotificationPreferences: null
D/pushio﹕ Get All PushIO Preferences
D/pushio﹕ mPushIOPersistenceManagerMap: 0
D/pushio﹕ Scheduling a new registration in 15 seconds
I/Broadcast registered﹕ true
D/Activity﹕ #1 setTransGradationModeColor false
D/OpenGLRenderer﹕ Enabling debug mode 0
D/pushio﹕ Starting registration...
D/pushio﹕ Register - Request String: dt=xxx
D/pushio﹕ Registration with push.io servers successful!
The problem is, I never receive any notification.
On top of that, the PushIO manager from which I am pushing doesn't show any number of 'Sent' notifications, though it shows on top of the image, that it was sent. See picture (might be just a bug in the UI, not sure):
My Manifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.otoincreasedk.increasepushio">
<uses-permission android:name="com.example.otoincreasedk.increasepushio.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET"/>
<permission android:name="com.example.otoincreasedk.increasepushio.permission.PUSHIO_MESSAGE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.otoincreasedk.increasepushio.permission.PUSHIO_MESSAGE"/>
<permission android:name="com.example.otoincreasedk.increasepushio.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="true"
android:theme="#style/AppTheme"
tools:node="replace">
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<receiver android:name="com.pushio.manager.PushIOBroadcastReceiver"
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.otoincreasedk.increasepushio" />
</intent-filter>
</receiver>
<activity android:name="com.pushio.manager.PushIOActivityLauncher" android:exported="true" />
<service android:name="com.pushio.manager.PushIOGCMIntentService" />
<service android:name="com.pushio.manager.PushIOEngagementService" />
<activity
android:name=".MainActivity"
android:label="#string/app_name"
android:theme="#style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--
<receiver
android:name="com.example.otoincreasedk.increasepushio.NotificationBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.example.otoincreasedk.increasepushio.PUSHIOPUSH"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
-->
</application>
</manifest>
My MainActivity's onCreate method:
// Instantiate the Push IO Manager:
PushIOManager pushIOManager = PushIOManager.getInstance(this);
// Ensure that any registration changes with Google get reflected with Push IO.
// Also registers for Broadcast Push Notifications (All Users).
pushIOManager.ensureRegistration();
I am developing an App for iOS and Android, for this app I am using ANEs from distriqt, and they say they work for both platforms. In iOS these ANEs work but when I develop in Android I get the error: Your key was not able to be verified for the com.distriqt.Notifications native extension, but the key works for NetworkInfo ANE.
If you have had a similar situation with these ANEs, could you please help me to attack this problem?
Thank you very much.
PD: My descriptor for android where i declare the extensions is below.
<extensions>
<extensionID>com.milkmangames.extensions.GoViral</extensionID>
<extensionID>com.distriqt.NetworkInfo</extensionID>
<extensionID>com.distriqt.InAppBilling</extensionID>
<extensionID>com.distriqt.Application</extensionID>
<extensionID>com.distriqt.Notifications</extensionID>
<extensionID>com.distriqt.PushNotifications</extensionID>
<extensionID>com.distriqt.Core</extensionID>
</extensions>
<android>
<manifestAdditions><![CDATA[
<manifest android:installLocation="auto" >
<!--<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/>-->
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- Only this application can receive the messages and registration result -->
<permission android:name="com.4starscasino.4StarsCasino.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.4starscasino.4StarsCasino.permission.C2D_MESSAGE" />
<uses-permission android:name="com.android.vending.BILLING" />
<application>
<receiver android:name="com.distriqt.extension.notifications.NotificationsReceiver">
<intent-filter>
<action android:name="com.4starscasino.4StarsCasino.NOTIFICATION" />
<action android:name="com.4starscasino.4StarsCasino.DELAYED_NOTIFICATION" />
</intent-filter>
</receiver>
<receiver android:enabled="true" android:exported="true" android:name="com.distriqt.extension.pushnotifications.PushNotificationsBroadcastReceiver" 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.4starscasino.4StarsCasino" />
</intent-filter>
</receiver>
<service android:enabled="true" android:exported="true" android:name="com.distriqt.extension.pushnotifications.gcm.GCMIntentService" />
<receiver android:name="com.distriqt.extension.pushnotifications.PushNotificationsReceiver">
<intent-filter>
<action android:name="com.4starscasino.4StarsCasino.PUSHNOTIFICATION_SELECTED" />
<data android:scheme="dtpn" />
</intent-filter>
</receiver>
<receiver android:enabled="true" android:name="com.distriqt.extension.application.receivers.ApplicationStartupReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:launchMode="standard">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="com.facebook.LoginActivity"
android:theme="#android:style/Theme.Translucent.NoTitleBar"
android:label="Login" />
<!-- replace 000000000000000 with your numeric Facebook Application ID -->
<provider android:authorities="com.facebook.app.NativeAppCallContentProvider634656129942853" android:name="com.facebook.NativeAppCallContentProvider" />
<!-- replace 000000000000000 with your numeric Facebook Application ID, and com.yourcompany.example with your apks application ID -->
<meta-data android:name="com.4starscasino.4StarsCasino" android:value="634656129942853"/>
<activity android:name="com.distriqt.extension.inappbilling.activities.PurchaseActivity" android:theme="#android:style/Theme.Translucent.NoTitleBar"></activity>
</application>
</manifest>
]]></manifestAdditions>
<!-- Color depth for the app (either "32bit" or "16bit"). Optional. Default 16bit before namespace 3.0, 32bit after -->
<!--<colorDepth></colorDepth>-->
<!-- Indicates if the app contains video or not. Necessary for ordering of video planes with graphics plane, especially in Jellybean - if you app does video this must be set to true - valid values are true or false -->
<!-- <containsVideo></containsVideo> -->
</android>
The issue will be with your application id, as it's not a valid Java package name, AIR will convert it to a valid one when creating the application apk. However this will cause issues with your manifest additions and key validation.
Basically starting a package name with a number or using hyphens are not valid in Java. You should either change your application id to something like:
com.fourstarscasino.fourStarsCasino
Or else you'll have to determine the actual Android package name and use that instead. It probably is something like:
com.A4starscasino.A4StarsCasino
You should unzip the apk and check the AndroidManifest.xml for the actual Android package name.
How should i register my android app (or) device to parse push site to get the notification.
now i was connected to GCM.
am not able to step ahead and register my device with parse...
Here's the best way to implement official Parse SDK for standard push notification based on my experiences and several trial and errors and also many SO and Parse threads reading. So I'll walk you through these steps:
Add the following dependencies to the app build.gradle file, and you can get the latest versions from Parse github blank projects or Parse SDK from docs category in the website. the latest versions until now is here:
compile 'com.parse.bolts:bolts-tasks:1.3.0'
compile 'com.parse:parse-android:1.11.0'
Add the following codes similar to the quick guide in the Application class's onCreate() method of the project, change the keys accordingly
--> Take attention that these two lines must be added after super.onCreate(); :
// Enable Local Datastore.
Parse.enableLocalDatastore(this);
// Add your initialization code here
Parse.initialize(this, "YOUR APPLICATION ID", "YOUR CLIENT KEY");
ParseInstallation.getCurrentInstallation().saveInBackground();
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// Optionally enable public read access.
// defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
Add the following line after setContentView in your MainActivity class:
ParseAnalytics.trackAppOpenedInBackground(getIntent());
add the Parse service and receivers to AndroidManifest.xml immediately before the closing </application> tag and make the mentioned package names identical to the yours:
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParsePushBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.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" />
<!--
IMPORTANT: Change "com.parse.starter" to match your app's package name.
-->
<category android:name="com.parse.starter" />
</intent-filter>
</receiver>
add permissions like the quick guide instructions typically immediately before the opening <application> tag, and make the mentioned package names identical to the yours, too:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!--
IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below
to match your app's package name + ".permission.C2D_MESSAGE".
-->
<permission android:protectionLevel="signature"
android:name="com.parse.starter.permission.C2D_MESSAGE" />
<uses-permission android:name="com.parse.starter.permission.C2D_MESSAGE" />
LAST STEP) Well Done! Enjoy pushing your stuff. ;)
Add the following code to your manifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="${your_application_package}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="${your_application_package}.permission.C2D_MESSAGE" />
<application
android:name="${your_application_package}.ParseApplication"
android:allowBackup="true"
android:icon="#drawable/contact_image"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name=".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>
<!-- Parse library -->
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.ParsePushBroadcastReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.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" />
<!-- IMPORTANT: Change "com.parse.starter" to match your app's package name. -->
<category android:name="${your_application_package}" />
</intent-filter>
</receiver>
Your ParseApplication should be like this
public class ParseApplication extends Application {
#Override
public void onCreate() {
super.onCreate();
//TODO: replace application_id and ClientKey with your parse credentials
Parse.initialize(this, "application_id", "ClientKey");
ParseInstallation.getCurrentInstallation().saveInBackground();
}
}
Add the bolts-android-1.2.0 and Parse-1.9.2 libraries to your project. Now run the application and check in the parse dashborad you will find your device registered.
just i had downloaded a sample push application from parse site...and in that downloaded solution will have 2 projects ...1 for ios and 1 for android...ios wont push directly...so we need to make our android project as startup project and need to run our application...so that your phone will detect by your parse site and goto push tab in dashboard and select send push ...there in the textbox write what info you want to push and click on send now...so that push information will appear on your miobile
i am using SCRINGO SDK in my android app....following are the screenshot for my app.. it is working fine but i am not getting notification when someone post , like or comment an activity , user messages .. i want to setup up alert ringtone or vibrate notification for that app so even when any user who is registered to the app got notifications on home screen with vibrate or alert tone (like ... user 4 likes your post.. you have a new message from user 2)...
i have tried using gcm services but its not working ... i have produced the app on google cloud got the project number and api key added it in scringo's dashboard.. and edited the mainfest but m not getting the desired result.... following is my mainfest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="com.scringo.friendz" >
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<permission android:name="com.scringo.friendz.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.scringo.friendz.permission.C2D_MESSAGE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<permission android:name="com.scringo.friendz.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="com.scringo.friendz.permission.MAPS_RECEIVE"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#android:style/Theme.Black.NoTitleBar" >
<receiver android:name="com.scringo.push.ScringoGCMBroadcastReceiver" 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.scringo.friendz"/>
</intent-filter>
</receiver>
<service android:name="com.scringo.push.ScringoGCMIntentService"/>
<activity
android:label="#string/app_name"
android:name="com.scringo.friendz.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.scringo.push.ScringoGCMBroadcastReceiver"
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.scringo.scringosample" />
</intent-filter>
</receiver>
<receiver android:name="com.scringo.friendz.MyReceiver">
<intent-filter>
<action android:name="com.scringo.LoginBroadcast" />
</intent-filter>
</receiver>
<service android:name="com.scringo.push.ScringoGCMIntentService" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyBx8aj7JrKh-rQAD96FgeAlf8-XFLc4ELc"/>
<activity
android:label="#string/title_activity_image_view"
android:name="com.scringo.friendz.ImageViewActivity" >
</activity>
</application>
</manifest>
Is it possible that you designated an IP address when setting up your server key (the instructions say to leave it blank, thus allowing all IPs)?
I followed the instructions provided by Scringo here exactly as written, and after successfully sending a test push message I started getting new message alerts when another user messaged me.
I followed the instruction but when I test sending the message I do not receive anything.
There are no errors in the application and the pushbot console sees that that there is a registered device.
How can I find out what is going on ?
The Code is very template like and follows all instructions that they have provided.
The application
import com.pushbots.push.Pushbots;
import android.app.Application;
public class MyApplication extends Application {
#Override
public void onCreate() {
super.onCreate();
String SENDER_ID = "ID here";
String PUSHBOTS_APPLICATION_ID = "Pushbot App Id";
Pushbots.init(this, SENDER_ID,PUSHBOTS_APPLICATION_ID);
}
}
The manifest looks like the following
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.zuppush"
android:versionCode="1"
android:versionName="1.0" >
<!-- GCM connects to Google Services. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<permission android:name="com.example.zuppush.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.zuppush.permission.C2D_MESSAGE" />
<!-- This app has permission to register and receive data message. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:name="com.example.zuppush.MyApplication"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name="com.example.zuppush.MainActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.example.zuppush.MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="com.pushbots.push.PBMsg"/>
<activity android:name="com.pushbots.push.PBListener"/>
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.zuppush" />
</intent-filter>
</receiver>
<receiver android:name="com.pushbots.push.MsgReceiver" />
<service android:name="com.pushbots.push.GCMIntentService" />
<service android:name="org.openudid.OpenUDID_service" >
<intent-filter>
<action android:name="org.openudid.GETUDID" />
</intent-filter>
</service>
</application>
</manifest>
I'm not sure which version of com.google.android.gcm.GCMBroadcastReceiver you are using, but if it's the default implementation taken from the old client GCM library, this implementation expects the GCMIntentService to be in the main package of your app (com.example.zuppush), which is not the case.
I just signed up for pushbots recently. No technical support. No one is answering the phone. Their phone number forwards to a business that has nothing to do with pushbots. Please be aware, I don't think this company exists anymore. I lost my 1st month subscription to the service, without any service actually being delivered. I assume that pushbots service is no longer available, and that no one is still using the service, despite the fact that they are still accepting credit cards on their web site. Sketchy.