はい、可能です。
Message API
(任意の形式の JSON または XML を使用できます)
Android Service
そのメッセージAPIに接続し、新しいメッセージをチェックします
- そして、あなたも必要かもしれません
BroadcastReceiver
これが私が使用したコードです。
まず、作成BroadcastReceiver
しService
てAndroidManifest.xml
<receiver android:name="com.example.Push_Notification" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.NETWORK_IDS_CHANGED" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service
android:name="com.example.Push_Notification_Checker"
android:enabled="true" />
これはPush_Notification
次のとおりです。
public class Push_Notification extends BroadcastReceiver{
private Context context;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
this.context = context;
startService();
}
public void startService(){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE );
NetworkInfo activeNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE|ConnectivityManager.TYPE_WIFI);
boolean isConnected = activeNetInfo != null && activeNetInfo.isConnectedOrConnecting();
Calendar cur_cal = Calendar.getInstance();
cur_cal.setTimeInMillis(System.currentTimeMillis());
Intent i = new Intent(context, Push_Notification_Checker.class);
PendingIntent pintent = PendingIntent.getService(context, 0, i, 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (isConnected){
catchLog("connecte " +isConnected);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cur_cal.getTimeInMillis(), 1 * 60*1000, pintent);
}
else {
catchLog("not connecte " +isConnected);
alarm.cancel(pintent);
}
}
private void catchLog(String log) {
Log.i("PushNotification", log);
}
}
これはPush_Notification_Checker
サービスです。:
public class Push_Notification_Checker extends Service {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
catchLog("Service got created");
nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
pref = getSharedPreferences(Constants.SHARED_PRED, 0);
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
//Here i call AsyncTask to check Message. Android didn't allow Network Connection directly tied into Main Thread
new GetMessage(getApplicationContext()).execute();
}
}
Android UDID をサーバーに送信することで、特定のデバイスに新しいメッセージがあるかどうかを確認できます。このようにして、特定のデバイスにメッセージを送信できます。UDID を取得する方法は?
AsyncTaskを使用して接続する理由は次のとおりです。これらの 2 つの例は、サーバーとの通信方法に役立ちます。
Httpポストメソッドでアンドロイドを使用してサーバーにデータを送信する方法は?
JSON経由でAndroidからサーバーにデータを送信する
これがロングショットであることは承知していますが、これが何らかの形で役立つことを願っています。
PS: 私も Google によって拒否された国の出身です