Android:使用 ParsePushBroadcastReceiver 解析推送通知不起作用
Posted
技术标签:
【中文标题】Android:使用 ParsePushBroadcastReceiver 解析推送通知不起作用【英文标题】:Android: Parse push notifications with ParsePushBroadcastReceiver doesn't work 【发布时间】:2016-03-18 12:33:43 【问题描述】:我关注了启动,我有一个正在运行的应用程序可以读取和写入解析,问题是我希望用户接收推送通知,但我无法让它工作。
<?xml version="1.0" encoding="utf-8"?>
<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:protectionLevel="signature"
android:name="com.messaging.application.app.permission.C2D_MESSAGE"/>
<user-permission android:name="com.messaging.application.app.permission.C2D_MESSAGE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:name="com.messaging.application.app.MyApplication">
<activity
android:name="com.messaging.application.app.LoginActivity"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.messaging.application.app.ListUsersActivity"
android:screenOrientation="portrait">
</activity>
<activity
android:name="com.messaging.application.app.SignUpActivity"
android:screenOrientation="portrait">
</activity>
<activity
android:name="com.messaging.application.app.ListFriendRequests"
android:screenOrientation="portrait">
</activity>
<activity
android:name="com.messaging.application.app.ListFriendsActivity"
android:screenOrientation="portrait">
</activity>
<service android:name="com.messaging.application.app.MessageService"/>
<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" />
<category android:name="com.messaging.application.app" />
</intent-filter>
</receiver>
<!--<receiver android:name="com.messaging.application.app.CustomReceiver"-->
<!--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>-->
<activity android:name="com.messaging.application.app.MessagingActivity"
android:screenOrientation="portrait">
</activity>
</application>
还有我的 build.grade
apply plugin: 'com.android.application'
apply plugin: 'com.parse'
buildscript
repositories
mavenCentral()
maven url 'https://maven.parse.com/repo'
dependencies
classpath 'com.parse.tools:gradle:1.+'
android
compileSdkVersion 19
buildToolsVersion "19.1.0"
defaultConfig
applicationId "com.messaging.application.app"
minSdkVersion 11
targetSdkVersion 19
versionCode 1
versionName "1.0"
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
productFlavors
dependencies
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:19.+'
compile files('libs/sinch-android-rtc-3.9.2.jar')
compile 'com.parse.bolts:bolts-android:1.+'
compile fileTree(dir: 'libs', include: 'Parse-1.13.0.jar')
我已经在安装过程中初始化了MyApplication
类中的解析。
public class MyApplication extends Application
@Override
public void onCreate()
super.onCreate();
Parse.initialize(this, "xxxx", "xxxx"); // replaced just for the question
ParseInstallation.getCurrentInstallation().saveInBackground();
当我登录解析时,我按了一些简单文本的发送通知,但我的设备上没有收到通知。问题可能是什么?
【问题讨论】:
你连接到互联网了吗?您能在安装表中看到您的安装吗?它的 deviceToken 呢?您是否将推送发送给正确的受众? 嗨,我已连接到互联网,在解析中我可以看到安装,我将推送发送给所有用户(只有这 1 个),我不明白 deviceToken 问题。你能具体说明那是什么吗? 当然。在安装表中有一个名为 deviceToken 的列。如果它为 NULL,则可能是您的问题的原因。 它是 。那会有什么不同吗? 是的,这就是问题所在。未发送推送,因为 Parse 无法识别您的设备。这是由于您的应用中的配置错误造成的。 【参考方案1】:我想你错过了ParseBroadcastReceiver
。这是我在我的配置和你的配置之间看到的唯一差异。尝试将此添加到您的清单中:
<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>
检查deviceToken
;)
希望对你有帮助!
【讨论】:
我也添加了这个接收器。我只是找不到 ParseInstallation 有什么问题以及为什么它忽略了 deviceToken 我发现如果应用程序在android上,deviceToken实际上不存在。这就是他们在 Parse.com 上的文档中所写的内容。以上是关于Android:使用 ParsePushBroadcastReceiver 解析推送通知不起作用的主要内容,如果未能解决你的问题,请参考以下文章
想要使用cordova/android禁用android的HardBack按钮
Android 安装包优化Android 中使用 SVG 图片 ( 使用 appcompat 支持库兼容 5.0 以下版本的 Android 系统使用矢量图 )