使用PushSharp进行推送通知的MonoDroid设备注册

时间:2013-02-07 10:00:14

标签: mono xamarin.android google-cloud-messaging pushsharp

在我的monodroid应用程序中,我在使用pushSharp为推送通知注册一些设备时遇到问题。我的通用推送通知设置在较新的设备上工作正常,例如SGS2,SGS3和Nexus7,但是在运行2.2和2.2.1的Legend和Hero上,注册在发布时失败(在调试中工作正常)。 我已将问题缩小到StartService调用:

var intent = new Intent(GCMConstants.INTENT_TO_GCM_REGISTRATION);
intent.SetPackage(GSF_PACKAGE);
intent.PutExtra(GCMConstants.EXTRA_APPLICATION_PENDING_INTENT,
                PendingIntent.GetBroadcast(context, 0, new Intent(), 0));
intent.PutExtra(GCMConstants.EXTRA_SENDER, senders);
context.StartService(intent);

清单文件看起来很好:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET" />
...
<!-- Google Cloud Messaging (GCM) for push messages -->
<permission android:name="my.package.name.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" />    
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

意图看起来很好(act = com.google.android.c2dm.intent.REGISTER pkg = com.google.android.gsf)并且senderId是正确的,但GCMIntentService OnReceive方法永远不会被触发......

有时使用logcat可以看到以下错误消息(虽然不一致):

E/C2DMRegistrar(  302): [C2DMReg] handleRequest caught java.io.IOException: SSL shutdown failed: I/O error during system call, Broken pipe.

我不确定如何解决这个问题,并希望得到任何帮助。

由于 彼得

1 个答案:

答案 0 :(得分:0)

您不需要这些权限,因为它们应该在您的pushsharp代码中设置...

    <permission android:name="my.package.name.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" />    
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
相关问题