こんにちは、プッシュ通知のポップアップを表示し、メッセージ データをローカル データベースに保存したいと考えています。Pushwoosh jar を統合しました。私のコードは
onCreate : if(!prefrences.getString("push", "").equalsIgnoreCase(""))
{
Log.w("already registered", "already registered");
Log.e("Token", prefrences.getString("push", ""));
}
else
{
//*** Registers For Push Woosh Notifications*//*
PushGCMIntentService p=new PushGCMIntentService();
PushManager push=new PushManager(this, APP_ID, SENDER_ID);
push.onStartup(this);
checkMessage(getIntent());
}
@Override
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
Log.e("ON NEW INTENT", "called");
setIntent(intent);
checkMessage(intent);
setIntent(new Intent());
}
private void checkMessage(Intent intent)
{
if (null != intent)
{
if (intent.hasExtra(PushManager.PUSH_RECEIVE_EVENT))
{
Log.e("push message is " , intent.getExtras().getString(PushManager.PUSH_RECEIVE_EVENT));
}
else if (intent.hasExtra(PushManager.REGISTER_EVENT))
{
Log.e("register",""+PushManager.REGISTER_EVENT);
//Toast.makeText(getApplicationContext(), ""+intent.getExtras().getString(PushManager.REGISTER_EVENT), Toast.LENGTH_SHORT).show();
s=intent.getExtras().getString(PushManager.REGISTER_EVENT);
Log.e("push message" , intent.getExtras().getString(PushManager.REGISTER_EVENT));
SharedPreferences pref =getSharedPreferences("Push",MODE_PRIVATE);
Editor edit=pref.edit();
edit.putString("push", s);
edit.commit();
Log.e("push token - - - >" , pref.getString("push", "Novalue"));
}
else if (intent.hasExtra(PushManager.UNREGISTER_EVENT))
{
Log.e("unregister","-------");
}
else if (intent.hasExtra(PushManager.REGISTER_ERROR_EVENT))
{
Log.e("register error","----------");
}
else if (intent.hasExtra(PushManager.UNREGISTER_ERROR_EVENT))
{
Log.e("unregister error","-----------");
// Toast.makeText(getApplicationContext(), "DFGDHDSHshsh", Toast.LENGTH_LONG).show();
}
resetIntentValues();
}
private void resetIntentValues()
{
Intent mainAppIntent = getIntent();
if (mainAppIntent.hasExtra(PushManager.PUSH_RECEIVE_EVENT))
{
mainAppIntent.putExtra(PushManager.PUSH_RECEIVE_EVENT, (String) null);
}
else if (mainAppIntent.hasExtra(PushManager.REGISTER_EVENT))
{
mainAppIntent.putExtra(PushManager.REGISTER_EVENT, (String) null);
}
else if (mainAppIntent.hasExtra(PushManager.UNREGISTER_EVENT))
{
mainAppIntent.putExtra(PushManager.UNREGISTER_EVENT, (String) null);
}
else if (mainAppIntent.hasExtra(PushManager.REGISTER_ERROR_EVENT))
{
mainAppIntent.putExtra(PushManager.REGISTER_ERROR_EVENT, (String) null);
}
else if (mainAppIntent.hasExtra(PushManager.UNREGISTER_ERROR_EVENT))
{
mainAppIntent.putExtra(PushManager.UNREGISTER_ERROR_EVENT, (String) null);
}
setIntent(mainAppIntent);
}
メッセージを受け取った後、「(intent.hasExtra(PushManager.PUSH_RECEIVE_EVENT))」をトリガーしてメッセージをポップアップできるようにする必要がありますが、通知バーの通知をクリックするまでメッセージは表示されません。また、メッセージに URL が含まれている場合、通知バーの通知をクリックしてもトリガーされません。私のマニフェストファイルは次のとおりです:
<activity android:name=".SplashScreen"
android:launchMode="singleTop"
android:noHistory="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="My_APP_PACAKGE_NAME.MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter></activity>
<activity android:name="com.arellomobile.android.push.PushWebview" />
<activity android:name="com.arellomobile.android.push.MessageActivity" />
<activity android:name="com.arellomobile.android.push.PushHandlerActivity" />
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver"
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=" My_APP_PACAKGE_NAME " />
</intent-filter>
</receiver>
<service android:name="com.arellomobile.android.push.PushGCMIntentService" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission
android:name=" My_APP_PACAKGE_NAME.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name=" My_APP_PACAKGE_NAME.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
助けてください。事前にサンクス。