应用程序在后台运行时的推送通知行为(Parse/Unity/Android)
我一直在尝试Parse的集成教程和示例,但我不知道当应用程序在后台运行时如何使推送通知显示在托盘中 但是,当应用程序关闭时,会出现通知! 此外,在前台时,推送通知事件也会正确触发 总之,除了在后台运行外,推送通知工作得非常好 日志中的通知如下所示: 07-02 04:43:06.979:I/GCM(22111):GCM消息com.parse.parseunitypushsample 0:1435804985959681%368c544ef9fd7ecd 07-02 04:43:07.033:W/GCM-DMM(22111):广播意图回调:结果=取消forIntent{act=com.google.android.c2dm.intent.RECEIVE pkg=com.parse.parseunitypushsample(有附加项)} 07-02 04:43:07.041:I/ParsePushService(16145):收到推送通知。有效负载:{“警报”:“来自解析的测试推送!”,“推送散列”:“2bf06f5e2a92eab2fcb855fc1117fa33”} 07-02 04:43:07.041:I/ParsePushService(16145):推送通知是在应用程序预发时处理的 请注意,它说的是“前景化”,即使其他应用程序在前台。这让我有点困扰,好像Parse决定不显示通知,因为它断定它在前台。只是我的猜测 我正在使用:应用程序在后台运行时的推送通知行为(Parse/Unity/Android),android,parse-platform,unity3d,Android,Parse Platform,Unity3d,我一直在尝试Parse的集成教程和示例,但我不知道当应用程序在后台运行时如何使推送通知显示在托盘中 但是,当应用程序关闭时,会出现通知! 此外,在前台时,推送通知事件也会正确触发 总之,除了在后台运行外,推送通知工作得非常好 日志中的通知如下所示: 07-02 04:43:06.979:I/GCM(22111):GCM消息com.parse.parseunitypushsample 0:1435804985959681%368c544ef9fd7ecd 07-02 04:43:07.033:W/
- 统一5.1.1f1(免费)
- 安卓5.1.1
- 这里提供的解析和教程项目:(只需修改即可使其在Unity5.x中运行)
- 提供的舱单:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.parse.parseunitypushsample" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <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" /> <permission android:protectionLevel="signature" android:name="com.parse.parseunitypushsample.permission.C2D_MESSAGE" /> <uses-permission android:name="com.parse.parseunitypushsample.permission.C2D_MESSAGE" /> <application android:label="@string/app_name" android:icon="@drawable/app_icon"> <!-- Added "com.unity3d.player" below to avoid crash --> <activity android:name="com.unity3d.player.UnityPlayerActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.parse.ParsePushBroadcastReceiver" 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.parse.parseunitypushsample" /> </intent-filter> </receiver> <service android:name="com.parse.ParsePushService" /> </application> </manifest>
谢谢:)如果你做到了,那你就快到了!我认为您需要将此脚本添加到一个游戏对象中:
using UnityEngine;
using System.Collections;
using Parse;
public class ParsePushRegistration : MonoBehaviour {
// Use this for initialization
void Start () {
#if UNITY_ANDROID
ParsePush.ParsePushNotificationReceived += (sender, args) => {
AndroidJavaClass parseUnityHelper = new AndroidJavaClass ("com.parse.ParseUnityHelper");
AndroidJavaClass unityPlayer = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject> ("com.unity3d.player.UnityPlayerNativeActivity");
// Call default behavior.
parseUnityHelper.CallStatic ("handleParsePushNotificationReceived", currentActivity, args.StringPayload);
};
#endif
}
}
使用UnityEngine;
使用系统集合;
使用语法分析;
公共类注册:MonoBehavior{
//用于初始化
无效开始(){
#如果你是安卓
ParsePush.ParsePushNotificationReceived+=(发送方,参数)=>{
AndroidJavaClass parseUnityHelper=新的AndroidJavaClass(“com.parse.parseUnityHelper”);
AndroidJavaClass unityPlayer=新的AndroidJavaClass(“com.unity3d.player.unityPlayer”);
AndroidJavaObject currentActivity=unityPlayer.GetStatic不确定这是否有帮助,但我可以通过编辑可用的插件源代码来解决这个问题。为此,我只需将push消息的字符串值缓存在ParsePushUnityHelper.java类中,然后通过Android CallStatic方法从Unity c#检索它。然后可以使用请记住,您必须重新编译plugin.jar并将其链接到您的Unity项目。祝您好运!非常感谢您的回答!我一直在尝试您的建议,以及您在另一个问题上发布的代码,但到目前为止还没有成功D:即使是c精益项目和您的更改,它只是不起作用。您建议的代码不会为我编译,因为“args.StringPayload”.在那个错误之后,我找到了这个线程。他们说在高于1.5.0的解析上使用它时会发生这种情况。我使用了1.5.1,刚刚尝试了1.5.2,仍然没有结果。我现在想尝试1.5.0,我会尽快告诉结果。等待“尽快获得结果”