Как я могу кроссплатформенно с Android и IOS - PullRequest
0 голосов
/ 09 апреля 2019

Я создал приложение для Android и IOS. Я на последнем барьере приложения. Я смог заставить пользователя Android работать с пользователем IOS, тогда как у IOS был вид таблицы.

Теперь я столкнулся с другой проблемой. Если «наездник» в приложении IOS запрашивает поездку и драйвер ANDROID доступен - мне нужна помощь для завершения этого варианта использования.

Если пользователь IOS делает запрос, это процесс:

func requestPressed(_ sender: Any) {
    print("... requestPressed")

    let dict = selectedPin!.addressDictionary
    if dict?.count == 0 {
        // this isn't shown to the user, just in your debug window
        print("no addresses available, try again in a few seconds")
        return
    }

    destAddress = selectedPin!.addressDictionary!["Street"] as? String ?? "None"
    if destAddress == "None" {
        print("no valid address available, try again in a few seconds")
        return
    }

    if userLocation != nil {
        print("my userLocation: \(userLocation!)")
        if canRequestRyde { // if true ...

            // get the destination area name, and the price
            areaNameDestination = DriveHandler.Instance.getAreaName(latitude: destLat, longitude: destLong)
            print("destination area \(areaNameDestination)")

            requestFarePrice()

            rRideHandler.Instance.requestRide(latitude: Double(userLocation!.latitude), longitude: Double(userLocation!.longitude), destLat: Double(destLat), destLong: Double(destLong), currentAddress: self.currentAddress, destAddress: destAddress, farePrice: farePrice)

            // reset the driver message
            driverMessage = ""

            canRequestRide(delegateCalled: true, request: nil)

        } else {

            riderCancelled()
        }

    }

}

запись Firebase будет выглядеть так:

RideRequests/IOS

Из этого мне нужно, чтобы онлайн-драйвер Android либо принял / отклонил запрос, и следовал инструкциям, как если бы это был Android Rider против Android Driver.

Ниже приведены шаги, если Android запрашивает поездку и нажимает «Запрос» btn

private void requestPickupHere(String uid) {

        Log.e(TAG, "requestPickupHere");

        DatabaseReference dbRequest = FirebaseDatabase.getInstance().getReference(Common
                .request_tbl); // "RideRequests"

        GeoFire mGeoFire = new GeoFire(dbRequest);
        mGeoFire.setLocation(uid, new GeoLocation(Common.mLastLocation.getLatitude(),
                Common.mLastLocation.getLongitude()));

        // write to db
        if (search_bar_destination != null) {
            dbRequest.child(uid).child("destination").setValue(search_bar_destination);


        } else if (tap_on_map_destination != null) {
            dbRequest.child(uid).child("destination").setValue(tap_on_map_destination);
        }

        dbRequest.child(riderId).child("status").setValue(""); 

        if (mUserMarker.isVisible()) {
            mUserMarker.remove();
        }

        // Add a new marker
        mUserMarker = mMap.addMarker(new MarkerOptions()
                .title("Pickup Here")
                .snippet("")
                .position(new LatLng(Common.mLastLocation.getLatitude(), Common.mLastLocation.getLongitude()))
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));

        mUserMarker.showInfoWindow();

        btnRequest.setText("Getting your DRIVER ...");

        location = getCompleteAddressString(Common.mLastLocation.getLatitude(), Common.mLastLocation.getLongitude());
        Log.e(TAG, "riders location = " + location);

        findDriver();
}

Когда приведенный выше код запускается, он открывает действие «Звонок клиента» в приложении водителя, где водитель может либо принять / отклонить запрос ..

Как получить запрос на отправку с IOS Rider на драйвер Android так же, как он будет работать с Android на Android?

1 Ответ

1 голос
/ 09 апреля 2019

Использование разных платформ не должно быть проблемой, когда пользователь запрашивает поездку, вы можете добавить атрибут под драйвером в базе данных, например:

DriverRides
       DriverId
            Name: peter
            purpose: needs a ride

Затем вы можете получить все запросы, которые будут отображаться для этого драйвера в recyclerview. Не должно иметь значения, какой телефон использует пользователь, кроме случаев, когда вы хотите, чтобы пользователь Android принимал запросы, а пользователь ios отправлял запросы.


Вы используете одну и ту же базу данных для обеих платформ, поэтому, когда пользователь ios или пользователь android хранят данные, они отправляются в одно и то же место. Например, если пользователь x использует iPhone, а пользователь y использует Samsung, вы должны сделать следующее в базе данных:

Users
  UserId1
     name: userx
     age: 100
  UserId2
     name: usery
     age: 120
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...