私の 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.
この問題を解決する方法がよくわかりません。助けていただければ幸いです。
ありがとうピーター