为什么我没有在应用程序未运行时收到推送通知

时间:2016-07-03 10:30:44

标签: java android push-notification google-cloud-messaging

这是我的完整代码。如果应用程序正在运行,那么我也会获得public void handleResponse方法的推送通知。但是,如果我退出应用程序,我不会得到推送通知,请帮助。

Mainactivity.java

    public class MainActivity extends AppCompatActivity {

    private static final String YOUR_APP_ID = "2C25D658-240D-4350-FF8A-6CF4DBD88F00";
    private static final String YOUR_SECRET_KEY = "24DB6F44-8C97-1DCF-FF22-060777780600";
    String appVersion = "v1";
    Subscription subscription;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Backendless.initApp(this, YOUR_APP_ID, YOUR_SECRET_KEY, "v1");

        Backendless.Messaging.registerDevice("183254839430", "default", new AsyncCallback<Void>() {
            @Override
            public void handleResponse(Void aVoid) {

                Toast.makeText(MainActivity.this, "Registered", Toast.LENGTH_LONG).show();
            }

            @Override
            public void handleFault(BackendlessFault backendlessFault) {

                Toast.makeText(MainActivity.this, backendlessFault.getMessage(), Toast.LENGTH_LONG).show();
            }
        });

        Backendless.Messaging.subscribe( "default",
                new AsyncCallback<List<Message>>() {

                    @Override
                    public void handleResponse(List<Message> response) {

                        Toast.makeText(MainActivity.this, "Notification arrived successfully", Toast.LENGTH_LONG).show();

                        for (Message message : response) {
                            String publisherId = message.getPublisherId();
                            Object data = message.getData();
                        }
                    }

                    @Override
                    public void handleFault(BackendlessFault fault) {
                        Toast.makeText(MainActivity.this, fault.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                },
                new AsyncCallback<Subscription>()
                {
                    @Override
                    public void handleResponse( Subscription response )
                    {
                        subscription = response;
                    }
                    @Override
                    public void handleFault( BackendlessFault fault )
                    {
                        Toast.makeText( MainActivity.this, fault.getMessage(), Toast.LENGTH_SHORT ).show();
                    }
                }
        );

    }
}

pushreceiver.java。

这段代码本身没有触发,我很困惑为什么: - (

    public class PushReceiver extends GcmListenerService {

        //This method will be called on every new message received
        @Override
        public void onMessageReceived(String from, Bundle data) {

            Toast.makeText(getApplicationContext(), "Notification came PushReceiver", Toast.LENGTH_LONG).show();

            //Getting the message from the bundle
            String message = data.getString("message");
            //Displaying a notiffication with the message
            sendNotification(message);
        }

        //This method is generating a notification and displaying the notification
    private void sendNotification(String message) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        int requestCode = 0;
        PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
        Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentText(message)
                .setAutoCancel(true)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
    }
}

我的清单文件。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="feelzdroid.backednlessgcm">

<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="feelzdroid.backednlessgcm.permission.C2D_MESSAGE"/>
<permission android:name="feelzdroid.backednlessgcm.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">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <receiver android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        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="feelzdroid.backednlessgcm"/>
        </intent-filter>
    </receiver>

    <service android:name=".PushReceiver" android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
        </intent-filter>
    </service>

</application>

日志。

07-03 16:43:31.893 11026-11143/feelzdroid.backednlessgcm I/GMPM: App measurement is starting up
07-03 16:43:31.915 11026-11143/feelzdroid.backednlessgcm E/GMPM: getGoogleAppId failed with status: 10
07-03 16:43:31.918 11026-11143/feelzdroid.backednlessgcm E/GMPM: Uploading is not possible. App measurement disabled

0 个答案:

没有答案