不调用OnMessageReceived

时间:2017-12-12 17:11:40

标签: android xamarin xamarin.android google-cloud-messaging gcmlistenerservice

我正在尝试使用xamarin通知。 对于Android,我已按照以下步骤操作:https://developers.google.com/cloud-messaging/android/client,以便客户端显示通知。 在我的服务器端,我使用pushSharp插件,因为来自服务器端的消息被发送,所以看起来一切正常。 问题是我没有在手机上收到通知。我的应用程序只是在我处于调试模式时崩溃,或者有时候当应用程序处于后台时它会崩溃。我可以看到这种方法:

 public override void OnMessageReceived(string from, Bundle data){//Extract the message received from GCM:
        var message = data.GetString("message");
        Log.Debug("MyGcmListenerService", "From:    " + from);
        Log.Debug("MyGcmListenerService", "Message: " + message);

        //Forward the received message in a local notification:
        SendNotification(message);}

根本没有被召唤。 我的清单如下:

<service android:name="com.my_companyname_goes_here.app_name_goes_here.android.MyGcmListenerService" android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>

我尝试在网上搜索答案,但没有一个解决了我的问题:GcmListenerService is not called When Application is in Background Xamarin GCM OnMessageReceived is not called等 任何形式的帮助将不胜感激。

编辑: 这是我的json

{
"message": "test",
"vibrate": 1,
"sound": 1
}

1 个答案:

答案 0 :(得分:0)

您可以阅读Xamarin官方文档Xamarin Google Cloud Messaging

https://developer.xamarin.com/guides/android/application_fundamentals/notifications/remote-notifications-with-gcm/

以下是有关上述文件的示例:

https://developer.xamarin.com/samples/monodroid/RemoteNotifications/

此外,请确保您的设备中有Google Play Services

更新:

请尝试添加如下服务属性:

[Service(Exported = false), IntentFilter(new[] { "com.google.android.c2dm.intent.RECEIVE" })]
public class MyGcmListenerService : GcmListenerService
{
    ...
}