解析 Android 推送通知

Parse Android Push Notifcations

我是 运行 Parse on Back4Apps,我已按照他们的说明进行操作,了解如何为 Android.

设置推送通知

http://docs.back4app.com/docs/android/push-notification/send-push-dashboard/

我从 Parse 仪表板推送通知,我的 phone 振动,它有时甚至会显示 1/2 秒的通知然后立即消失,所以我知道我的 phone 正在接收它,我错过了什么?为什么不显示?

非常感谢。

主要应用:

  public class MainApplication extends Application {
     public MainApplication()
    {
        instance=this;
    }
    public static Context getContext()
    {
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();

              // Enable Crash Reporting
        ParseCrashReporting.enable(this);
        Parse.enableLocalDatastore(this);
        Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
                .applicationId("blah blah")
                .clientKey("blah blah")
                .server("https://parseapi.back4app.com/")
                .enableLocalDataStore()
                .build());

        ParseInstallation installation = ParseInstallation.getCurrentInstallation();
        installation.put("GCMSenderId", "123456789 etc");
        installation.saveInBackground();


    }
}

Build.Gradle:

 dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile files('src/main/java/libs/ParseCrashReporting-1.9.2.jar')
    compile files('src/main/java/libs/picasso-2.5.2.jar')
    compile 'com.parse.bolts:bolts-android:1.+'
    compile 'com.google.android.gms:play-services:10.0.1'
    compile 'com.google.android.gms:play-services-ads:10.0.1'
    compile 'com.facebook.android:facebook-android-sdk:[4,5)'
    compile 'com.parse:parsefacebookutils-v4-android:1.10.3@aar'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.firebase:firebase-messaging:10.0.1'
    compile 'com.parse:parse-android:1.13.1'
}
apply plugin: 'com.google.gms.google-services'

Android 清单:

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

<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.RECEIVE_BOOT_COMPLETED" />
<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" />

<permission android:name="adam.exercisedictionary.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="adam.exercisedictionary.permission.C2D_MESSAGE" />
<application android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:name="adam.exercisedictionary.MainApplication"
    android:theme="@style/AppTheme"
    android:largeHeap="true">
<activity
        android:name="adam.exercisedictionary.CategoryList"
        android:label="Gym Exercises">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="android.app.default_searchable"
            android:value=".SearchResultsActivity"/>
    </activity>
<service android:name="com.parse.PushService" />
    <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" />
            <category android:name="adam.exercisedictionary" />
        </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.OPEN" />
            <action android:name="com.parse.push.intent.DELETE" />
        </intent-filter>
    </receiver>
    <meta-data android:name="com.parse.push.gcm_sender_id"
        android:value="id:123456789 etc" />

您能否尝试创建一个扩展 AppCompatActivity 的 Activity,而不是一个扩展 Application 的 class?这可能是问题所在,因为您指出的教程使用的是该方法,而不是这个方法。

上面的代码工作正常。我测试的设备有问题。我将 APK 发送到我朋友的一些 Android 设备上进行尝试,结果运行良好,他们收到了警报。我的设备上一定有什么东西抑制了通知,我的应用程序允许在设备上发送通知,但它无法正常工作。

证明了在多个设备上进行测试的意义 in-case 一切看起来都应该可以,但实际上并没有。