簡體   English   中英

在后台運行應用程序時推送通知行為(解析/ Unity / Android)

[英]Push notifications behaviour while app running in background (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):廣播意圖回調:result = CANCELLED forIntent {act = com.google.android.c2dm.intent.RECEIVE pkg = com.parse.parseunitypushsample(具有其他功能) )}

07-02 04:43:07.041:I / ParsePushService(16145):收到推送通知。 有效負載:{“ alert”:“來自Parse的測試推送!”,“ push_hash”:“ 2bf06f5e2a92eab2fcb855fc1117fa33”}

07-02 04:43:07.041:I / ParsePushService(16145):在應用程序前台時處理推送通知。

請注意,即使其他某個應用程序處於前台,它也會顯示“ foregrounded”。 這讓我有些困擾,好像Parse決定不顯示該通知,因為它斷定該通知處於前台。 只是我的猜測。

我正在使用:

  • Unity 5.1.1f1(免費)
  • Android 5.1.1
  • 此處提供了解析和教程項目: https : //parse.com/apps/quickstart#parse_push/unity/android/new (僅需進行修改即可使其在Unity 5.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> 

我只是在構建教程項目,但是它需要Unity升級,並需要運行一些小修復。 否則,它很干凈,似乎可以正確接收推送通知,但是在后台運行時不顯示它們。

這是預期的行為,還是我做錯了什么?

謝謝 :)

如果知道了,那您就快到了! 我認為您需要將此腳本添加到您的一個GameObjects中:

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
        }
    }

檢查並跟蹤該問題,這可能對您有用: 解析Unity Push Sample不起作用

不確定這是否有幫助,但是我可以通過編輯此處提供的插件源來解決此問題 為此,我只需將Push msg的字符串值緩存在ParsePushUnityHelper.java類中,然后通過Android CallStatic方法從Unity c#中檢索它。 然后,您可以使用一個公共可用的Json模塊之一將其從json字符串轉換為字典。 請記住,您將不得不重新編譯插件.jar並將其鏈接到Unity項目。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM