2016-01-26 27 views
1

我已經從Parse.com下載了一個Xamarin.Android推送通知示例項目,並且它在應用程序處於前景或最小化時起作用。 如果我從最近的應用程序屏幕中終止應用程序,應用程序將不會顯示未來的通知。當應用程序在Android上被終止時,解析推送通知不起作用

我的清單:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.parse.parsexamarinpushsample" android:versionCode="1" android:versionName="1.0" android:installLocation="auto"> 
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="21" /> 
<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.parsexamarinpushsample.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.parse.parsexamarinpushsample.permission.C2D_MESSAGE" /> 
<application android:name="parsexamarinpushsample.ParseApplication" android:label="ParseXamarinPushSample" android:icon="@drawable/Icon" android:theme="@android:style/Theme.Light"> 
    <receiver android:name="parse.ParsePushBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 
     <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" />   
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <category android:name="com.parse.parsexamarinpushsample" /> 
     </intent-filter> 
    </receiver> 
    <service android:name="parse.ParsePushService" /> 
</application> 

我的代碼:

public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) 
    { 
     ParseClient.Initialize("appid", "clientid"); 
     ParsePush.ParsePushNotificationReceived += ParsePush.DefaultParsePushNotificationReceivedHandler; 
     ParsePush.ParsePushNotificationReceived += ParsePushOnParsePushNotificationReceived; 

     ParseInstallation installation = ParseInstallation.CurrentInstallation; 

     installation.SaveAsync(); 

     return StartCommandResult.Sticky; 
    } 

發出通知後,我注意到在解析儀表盤該通知被標記爲「成功」,所以我有一個理由相信我的手機正在收到通知,但沒有可以處理的應用程序。

我是否需要一些針對廣播接收者的意圖操作或者我的清單有問題?

在此先感謝

+0

原因是,如果你正在殺死你的應用程序,你也在查殺連接到這個應用程序的服務和廣播接收器。因爲你的應用程序無法接收通知。有方法可以重新啓動這些服務,但它們相當複雜 – Rich

+1

我以同樣的方式殺死Viber,Instagram和Facebook Messenger,並且我仍然收到來自這些服務的通知。你知道如何用Parse API實現這種行爲嗎? – Xzil0

+0

正如我所說的,有些方法可以在被殺時自動重啓服務。你必須找到一種方法來做到這一點(例如http://stackoverflow.com/questions/21550204/how-to-automatically-restart-a-service-even-if-user-force-close-it) – Rich

回答

0

刪除menifiest文件的刪除權限。改變你這樣的權限

<service android:name="com.parse.PushService" /> 
<service android:name="com.performtec.notification.PushHandler" /> 
<receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 
<intent-filter> 
<action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
<action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
    <category android:name="com.PackageName.packageName" /> 
相關問題