2015-07-07 2 views
16

Sto utilizzando Laravel per la creazione di un'app che aiuti gli utenti a trovare fornitori di servizi. Ci saranno 2 app come Uber, 1 per gli utenti e 1 per i provider. L'utente farà una richiesta e, a seconda della richiesta, i fornitori selezionati riceveranno una notifica. Proprio come Uber.Laravel Consumer e Provider App architettura

Il problema è, come dovrei progettare questo. Quello che mi si avvicinò con:

  1. 2 APPS: avere 2 applicazioni laravel con db comune. Ma come faccio a notificare i provider quando un utente genera una richiesta? Cambia solo il DB, quindi come faccio a comunicare all'app Provider quell'applicazione utente ha generato una richiesta?

  2. Single App 2 FrontEnds: Avere una singola app Laravel e 2 estremità frontali. Ci saranno app separate su Play Store ma su un'unica App Server. Come posso fare questo?

Esiste una soluzione migliore per questo approccio? Come fa Uber a fare lo stesso?

+1

Solo per aiutare gli altri con problemi simili, mi sono trasferito a Meteor invece di Laravel. In Meteor ho creato due app completamente diverse e le ho collegate allo stesso DB. Ogni volta che il DB cambia, Meteor rifletterà le modifiche su entrambi i client. Utilizza websockets per impostazione predefinita in modo che tutte le modifiche vengano trasferite ai client. È perfetto per il mio scenario. Grazie – rohitnaidu19

risposta

7

Suggerirei di utilizzare un determinato servizio come PubNub (see Demos).

In questo modo si potrebbe risparmiare il server-sviluppo, v'è anche un Android-Example È semplice utilizzo all'interno della vostra APP in questo modo:

dependencies { 
    .... 
    compile 'com.pubnub:pubnub:3.7.4' 
    //'com.pubnub:pubnub-android-debug:3.7.+' For the debug version 
} 

e

import com.pubnub.api.*; 
import org.json.*; 

Pubnub pubnub = new Pubnub("demo", "demo"); 

try { 
    pubnub.subscribe("my_channel", new Callback() { 
     @Override 
     public void connectCallback(String channel, Object message) { 
      pubnub.publish("my_channel", "Hello from the PubNub Java SDK", new Callback() {}); 
     } 

     @Override 
     public void disconnectCallback(String channel, Object message) { 
      System.out.println("SUBSCRIBE : DISCONNECT on channel:" + channel 
        + " : " + message.getClass() + " : " 
        + message.toString()); 
     } 

     public void reconnectCallback(String channel, Object message) { 
      System.out.println("SUBSCRIBE : RECONNECT on channel:" + channel 
        + " : " + message.getClass() + " : " 
        + message.toString()); 
     } 

     @Override 
     public void successCallback(String channel, Object message) { 
      System.out.println("SUBSCRIBE : " + channel + " : " 
        + message.getClass() + " : " + message.toString()); 
     } 

     @Override 
     public void errorCallback(String channel, PubnubError error) { 
      System.out.println("SUBSCRIBE : ERROR on channel " + channel 
        + " : " + error.toString()); 
     } 
    } 
); 
} catch (PubnubException e) { 
    System.out.println(e.toString()); 
} 

Se siete alla ricerca di Spiega come sta facendo Uber, guarda il tutorial "The PubNub Connected Car Solution Kit"

Quindi spero di poter rispondere, come fa Uber è e come è possibile renderlo migliore :-)

+1

oh, a proposito: ho dimenticato PHP per cose del genere. Blocca troppo a lungo un DB per più dispositivi all'interno di sistemi distribuiti come questo. Accanto a PubNub ci sono altri distributori, ma ho fatto esperienze molto positive con le persone simpatiche sviluppate per Tessel.io :-) ... sì, puoi anche usare i microcontrollori per la tua idea! – Danny

3

Se si desidera sviluppare l'applicazione per utente normar e per provider.

Allora io vi suggerisco di sviluppare 2 app seprate e un unico server (mai creare server differenti per ogni applicazione)

oppure è possibile assegnare i tipi di utente al momento della registrazione.

+0

Puoi spiegare in che modo le app comunicano con il server e si notificano a vicenda? – rohitnaidu19

+0

È necessario creare un'architettura totale di app, È possibile creare API per comunicare con il server. – Gaurav

2

Dovresti sviluppare un'API comune e due app come Uber. Oppure potresti creare un'unica app per il venditore e l'acquirente come eBay. Dovresti utilizzare un listener sul tuo codice server, quindi ogni volta che viene attivato un evento, devi inviare tali e tali notifiche. Dai un'occhiata al modello di design degli ascoltatori.

0

Poiché esiste un singolo (database), è preferibile utilizzare un'unica applicazione di back-end. È possibile inviare la notifica push ai fornitori (app Android) quando l'utente aggiunge una nuova richiesta.