Proyectos de Subversion Android Microlearning - Nuevo Interface

Rev

Rev 44 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 44 Rev 45
Línea 34... Línea 34...
34
 
34
 
Línea 35... Línea 35...
35
public class FcmMessagingService extends FirebaseMessagingService {
35
public class FcmMessagingService extends FirebaseMessagingService {
36
 
-
 
37
 
-
 
38
    private static final String TAG = "C2GS - FcmMessageServ";
-
 
39
   // private AppDatabase mAppDatabase;
-
 
40
    //boolean isSyncDevice = false;
-
 
Línea 41... Línea 36...
41
    //boolean isSyncToken = false;
36
 
42
   // Preference preference;
37
 
Línea 43... Línea -...
43
 
-
 
44
 
-
 
45
 
-
 
46
    @Override
38
    private static final String TAG = "C2GS - FcmMessageServ";
47
    public void onCreate() {
39
 
48
 
40
 
Línea 49... Línea 41...
49
       // preference = Preference.getInstance(getApplicationContext());
41
    @Override
Línea 122... Línea 114...
122
 
114
 
123
 
115
 
124
    public void onNewToken(String fcm_token)
116
    public void onNewToken(String fcm_token)
125
    {
-
 
126
        Log.e("BUG Token", "Token 2 :  " + fcm_token);
-
 
127
        /*
-
 
128
        Log.e("FcmMessagingService", "onNewToken token = " + fcm_token);
-
 
129
 
-
 
130
        String uuid = UniqueID.id(getApplicationContext());
-
 
131
 
-
 
132
        preference.setDeviceToken (fcm_token);
-
 
133
        preference.setDeviceUuid(uuid);
-
 
134
        preference.save();
-
 
135
 
-
 
136
        Sync sync = new Sync(Constants.SYNC_ADAPTER_TYPE_DEVICE, uuid);
-
 
137
        mAppDatabase.getSyncDao().insert(sync);
-
 
138
 
-
 
139
        sync = new Sync(Constants.SYNC_ADAPTER_TYPE_FCM, fcm_token);
-
 
140
        mAppDatabase.getSyncDao().insert(sync);
-
 
141
 
-
 
Línea 142... Línea 117...
142
        syncTokenFMCTo2getSkillServer();
117
    {
143
        */
118
        Log.e("BUG Token", "Token 2 :  " + fcm_token);
144
 
119
 
Línea 145... Línea 120...
145
        Intent intent = new Intent(Constants.BROADCAST_TYPE_TOKEN);
120
        Intent intent = new Intent(Constants.BROADCAST_TYPE_TOKEN);
Línea 146... Línea -...
146
        intent.putExtra("token", Functions.trimNull(fcm_token));
-
 
147
        getApplicationContext().sendBroadcast(intent);
-
 
148
 
-
 
149
 
-
 
150
    }
-
 
151
 
-
 
152
    /*
-
 
153
    private void syncTokenFMCTo2getSkillServer(){
-
 
154
 
-
 
155
 
-
 
156
        SyncDao syncDao = mAppDatabase.getSyncDao();
-
 
157
        List<Sync> records = syncDao.selectBatch();
-
 
158
 
-
 
159
        if(records.size() > 0) {
-
 
160
            syncToServer(records);
-
 
161
        }
-
 
162
}
-
 
163
 
-
 
164
    public void syncToServer(List<Sync> records) {
-
 
165
 
-
 
166
        for (Sync record : records) {
-
 
167
            if (record.getType() == Constants.SYNC_ADAPTER_TYPE_DEVICE && !isSyncDevice) {
-
 
168
 
-
 
169
 
-
 
170
                try {
-
 
171
                    Http http = new Http(this.getCacheDir());
-
 
172
                    OkHttpClient client = http.getHttpClient(false);
-
 
173
 
-
 
174
                    RequestBody formBody = new FormBody.Builder()
-
 
175
                            .add(Constants.POST_DEVICE_FIELD_APPLICATION_ID, String.valueOf(Configuration.APPLICATION_ID))
-
 
176
                            .add(Constants.POST_DEVICE_FIELD_DEVICE_UUID, preference.getDeviceUuid())
-
 
177
                            .add(Constants.POST_DEVICE_FIELD_MANUFACTURER, Build.MANUFACTURER)
-
 
178
                            .add(Constants.POST_DEVICE_FIELD_BRAND, Build.BRAND)
-
 
179
                            .add(Constants.POST_DEVICE_FIELD_VERSION, Build.VERSION.RELEASE + " " + Build.VERSION_CODES.class.getFields()[android.os.Build.VERSION.SDK_INT].getName())
-
 
180
                            .add(Constants.POST_DEVICE_FIELD_MODEL, Build.MODEL)
-
 
181
                            .add(Constants.POST_DEVICE_FIELD_PLATFORM, "android")
-
 
182
                            .add(Constants.POST_DEVICE_FIELD_SYNC_ID, String.valueOf(record.getId()))
-
 
183
                            .build();
-
 
184
 
-
 
185
                    Log.d(TAG, "URL = " + Configuration.URL_DEVICE);
-
 
186
                    Request request = new Request.Builder()
-
 
187
                            .url(Configuration.URL_DEVICE)
-
 
188
                            .post(formBody)
-
 
189
                            .build();
-
 
190
 
-
 
191
                    Call call = client.newCall(request);
-
 
192
                    call.enqueue(new okhttp3.Callback() {
-
 
193
                        public void onResponse(Call call, Response response)
-
 
194
                                throws IOException {
-
 
195
                           // isSyncDevice = false;
-
 
196
                            Log.d(TAG, "Response Device :  " + response.body().toString());
-
 
197
 
-
 
198
                            processResponseSyncToServer(response.body().string(), "device");
-
 
199
                        }
-
 
200
 
-
 
201
                        public void onFailure(Call call, IOException e) {
-
 
202
                            isSyncDevice = false;
-
 
203
                            Log.d(TAG, "Error :  " + e.getMessage());
-
 
204
                        }
-
 
205
                    });
-
 
206
                } catch (Exception e) {
-
 
207
                }
-
 
208
            }
-
 
209
            if(record.getType() == Constants.SYNC_ADAPTER_TYPE_FCM && !isSyncDevice){
-
 
210
 
-
 
211
                //Sucede que intenta sincronizar primero el Token antes que el device.
-
 
212
                Log.e("Esta intentando","sync el token antes que device");
-
 
213
            }
-
 
214
 
-
 
215
            if (record.getType() == Constants.SYNC_ADAPTER_TYPE_FCM && !isSyncToken && isSyncDevice) {
-
 
216
                isSyncToken = true;
-
 
217
                Log.d(TAG, "FCM");
-
 
218
                Log.e("Token a Sync", "" + record.getData());
-
 
219
 
-
 
220
                try {
-
 
221
                    Http http = new Http(this.getCacheDir());
-
 
222
                    OkHttpClient client = http.getHttpClient(false);
-
 
223
 
-
 
224
                    RequestBody formBody = new FormBody.Builder()
-
 
225
                            .add(Constants.POST_FCM_FIELD_DEVICE_UUID, preference.getDeviceUuid())
-
 
226
                            .add(Constants.POST_FCM_FIELD_TOKEN, record.getData())
-
 
227
                            .add(Constants.POST_FCM_FIELD_SYNC_ID, String.valueOf(record.getId()))
-
 
228
                            .build();
-
 
229
 
-
 
230
                    Log.d(TAG, "URL = " + Configuration.URL_FCM);
-
 
231
                    Request request = new Request.Builder()
-
 
232
                            .url(Configuration.URL_FCM)
-
 
233
                            .post(formBody)
-
 
234
                            .build();
-
 
235
 
-
 
236
                    Call call = client.newCall(request);
-
 
237
                    call.enqueue(new okhttp3.Callback() {
-
 
238
                        public void onResponse(Call call, Response response)
-
 
239
                                throws IOException {
-
 
240
                            isSyncToken = false;
-
 
241
                            Log.e("Send FCM Token", "Procesando respuesta..");
-
 
242
                            processResponseSyncToServer(response.body().string(), "fcmtoken");
-
 
243
                        }
-
 
244
 
-
 
245
                        public void onFailure(Call call, IOException e) {
-
 
246
                            Log.d(TAG, "Error :  " + e.getMessage());
-
 
247
                            isSyncToken = false;
-
 
248
                        }
-
 
249
                    });
-
 
250
                } catch (Exception e) {
-
 
251
                    e.printStackTrace();
-
 
252
 
-
 
253
                }
-
 
254
            }
-
 
255
        }
-
 
256
    }
-
 
257
 
-
 
258
    private void processResponseSyncToServer(String dataString, String origen)
-
 
259
    {
-
 
260
        boolean success = false;
-
 
261
        long sync_id = 0;
-
 
262
 
-
 
263
        Log.d(TAG, "processResponseServer = " + dataString);
-
 
264
        try {
-
 
265
            JSONObject objJSON = new JSONObject(dataString);
-
 
266
            success = objJSON.has("success") ? objJSON.getBoolean("success")  : false;
-
 
267
            if(success  && objJSON.has("data")) {
-
 
268
                JSONObject jsonObjectData = objJSON.getJSONObject("data");
-
 
269
 
-
 
270
 
-
 
271
                if(jsonObjectData.has("sync_id")) {
-
 
272
                    sync_id = jsonObjectData.getLong("sync_id");
-
 
273
                }
-
 
274
 
-
 
275
            }
-
 
276
            Log.d(TAG, "SyncID = " + sync_id);
-
 
277
            if(success && sync_id > 0) {
-
 
278
                Log.d(TAG, "DELETE SYNC RECORD : " + sync_id);
-
 
279
                mAppDatabase.getSyncDao().remove(sync_id);
-
 
280
 
-
 
281
                if(origen.equals("device"))
-
 
282
                {
-
 
283
                    Log.e("Sync","device exitoso, ahora sigo con TokenFCM");
-
 
284
                    isSyncDevice=true;
-
 
285
                    syncTokenFMCTo2getSkillServer();
-
 
286
                }
-
 
287
                if(origen.equals("fcmtoken")){
-
 
288
                    Log.e("Token", "termino de sync con exito");
-
 
289
                }
-
 
290
            }
121
        intent.putExtra("token", Functions.trimNull(fcm_token));
291
        } catch (JSONException e) {
122
        getApplicationContext().sendBroadcast(intent);