Customer SDK for iOS

V 1.16.1

🚧

New in version 1.16.1

  • fixed bug where driver location updates didn't fire

🚧

New in version 1.16.0

  • added support for watchOrder by share uuid and customer access token

❗️

New in version 1.15.0

  • TrackerManager and HTTPClientManager are no longer singletons and should not be used directly
  • all SDK calls should be done only via the BringgTrackingClient class

🚧

New in version 1.14.0

watch order methods now require two mandatory parameters to work. previous watch order methods were replaced with the following two options for watching an order via the BringgTrackingClient class:

  • (void)startWatchingOrderWithUUID: shareUUID: delegate:;

  • (void)startWatchingOrderWithUUID:uuid customerAccessToken: delegate:;

also added to the BringgTrackingClient class is the option to fetch the most updated order, driver, share uuid

  • (GGOrder *)orderWithUUID:;
  • (GGDriver *)driverWithUUID:;
  • (NSString *)shareUUIDForDriverWithUUID:;

note: share uuid can also be found as a property of GGOrder and as a property of GGOrder.sharedLocation

🚧

New in version 1.13.0

  • fixed driver rating issue when trying to rate with expired shared location

❗️

New in version 1.12.0

  • SDK is now redesigned to have all public header in one end point - BringgTrackingClient singleton class
  • previous public managers (http manager , tracking manager) are now private to the SDK and can no longer be accused

Migration guidelines

  • common public method signatures have not changed. what is changed is that now the are accessed via the new BringgTrackingClient singleton class
  • please read blow on how to initialize BringgTrackingClient

🚧

New in version 1.10.9

  • Fixed a bug where rest call was missing share_uuid param

🚧

New in version 1.10.8

  • Fixed a problem where watching a completed order didn't fire delegates correctly

🚧

New in version 1.10.6

  • Fx for developerToken conversation from objc to swift3
  • Added flag for SDK level debug logs

🚧

New in version 1.10.5

  • Fixed a problem where watching a waypoint after an order has started will not work

🚧

New in version 1.10.4

  • added waypoint watch success delegate method that passes the waypoint model into the delegate

🚧

New in version 1.10.3

  • updated Apple’s Reachability classes (fixed compile error on Swift3)

🚧

New in version 1.10.1

  • fixed waypoint ETA delegate updates

🚧

New in version 1.9.92

  • Support Xcode8/Swift 3
  • Pre-Swift 3 support is no longer maintained, If you need swift 2.2 use 1.9.9

❗️

Last version supporting swift 2.2 (v1.9.106)

Install using CocoaPods (see Installation):

pod 'BringgTracking', :git => 'https://github.com/bringg/customer-sdk-ios.git', :branch => 'swift_2_2'

🚧

New in version 1.9.9

  • the SDK now supports installation through CocoaPods dependency manager. (See Installation section)

🚧

New in version 1.9.7

  • fixed issue when uploading to App Store
  • consuming framework now requires trimming architectures before publishing to app store

❗️

Publishing To Appstore

before publishing to App Store architectures i386 & x86_64 need to be trimmed
please checkout our demo project build phases for more information
also checkout this article.

🚧

New in version 1.9.5

  • removed dependency AFNetworking (now using native networking)
  • developers are now free to use any version of any networking third-party-lib

🚧

New in version 1.9.0

  • BringgTracking SDK is now a framework and not a static lib
  • upgraded realtime mechanism to use socket io 1.x (instead of 0.x)
  • pod file updated
  • pod 'Socket.IO-Client-Swift'

❗️

V1.9.0 minimum iOS version is iOS 8.0

  • since v1.9.0, minimum iOS version is 8.0. if you need to support older iOS versions. please download older SDK versions as linked in the bottom of this page

The Bringg (SDK) for iOS enables you to quickly and easily embed Bringg tracking screen into your own iOS native app.

Please refer to our terms of service before downloading Bringg SDK: https://bringg.com/sdk-terms-of-service/

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate BringgTracking SDK into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'

pod 'BringgTracking'

Then, run the following command:

$ pod install

🚧

Troubleshoot

  1. In case you are getting an error Unable to find a specification for BringgTracking, please update your local pod spec repository:
$ pod repo update --verbose
  1. In case of an error Include of non-modular header inside framework module
    Please go to your target build settings and make sure the setting Allow Non-modular Includes In Framework Modules is set to Yes

Manual installation

  1. Download the latest Bringg SDK for iOS. this will give the the a version folder with the BringgTracking.framework file.
  2. import the framework folder into your project
  3. in the General tab. make sure the framework is under the "Embedded Binaries" and not the "Linked frameworks..."
  4. where ever you wish to use the sdk classes remember to #import <BringgTracking/BringgTracking.h>
  5. in your pod file, add the following dependencies
    pod 'AFNetworking', '2.6.3'
    pod 'Socket.IO-Client-Swift'
  6. if you are unfamiliar with Cocoapods, here is a quick start guide

You can also view and download our Sample App to help get the most out of Bringg SDK.

🚧

Dependencies

Bringg SDK static library needs AFNetworking v.2.6.3 (currently sdk doesn't support AFN 3.x ) to handle http communication. if you are planning to use AFNetworking across your app, just make sure to add the following line to your cocoa pods
pod 'AFNetworking', '2.6.3'

Overview

The Bringg iOS SDK is composed of one main class that represent the concept of the SDK
BringgTrackingClient

this class requires a valid developer token to operate and initialize
the SDK client can operate without signing-in a customer but it's operation will be limited might be limited for fully functional tracker please use the sign-in method to sign in your customer and get the full power of the SDK

Usage

Step 1

define a static var holding the developer token
Initialise the BringgTrackingClient with the developer token and a RealTimeDelegate Conforming object

#define kBringgDeveloperToken @"YOUR_DEVELOPER_ACCESS_TOKEN"

self.trackingClient = [BringgTrackingClient clientWithDeveloperToken:kBringgDeveloperToken connectionDelegate:self];

Step 2 optional

Use the BringgTrackingClient to sign in a customer
you will need to provide all the arguments stated in the the http manager header
the confirmationCode argument represent the verification code you send to your customers to via SMS.
as a developer you can use our Partner API to create Customers and set the confirmation code manually.

- (void)signInWithName:(NSString * _Nullable)name
                 phone:(NSString * _Nullable)phone
                 email:(NSString * _Nullable)email
              password:(NSString * _Nullable)password
      confirmationCode:(NSString * _Nullable)confirmationCode
            merchantId:(NSString * _Nonnull)merchantId
                extras:(NSDictionary * _Nullable)extras
     completionHandler:(nullable GGCustomerResponseHandler)completionHandler

in the completion block for the sign a new Customer object will be passed

❗️

** PLEASE NOTE **

Starting with v1.5.x - tracking disconnections are handled automatically by the SDK

Sign-in vs. Anonymous usage

signing-in is an optional (yet recommended) action that will let us authenticate the user.

the sdk provides a simple way to handle the signing-in process for you. all you have to do is provide the required parameters.

🚧

Sign-in will work only for registered customers

📘

Creating a customer

A customer can only be created from your server, using the api call found on the following link
https://developer-api.bringg.com/partner_api/customers

Find Me

Find me feature allows the app using SDK to report its current location (this isn't an ongoing tracking of the customer, rather, a user initiated location pin). the main use case here is when a customer wishes to notify a driver that he has moved to some location (like a spot in a middle of a park).
FindMe request can be initiated by providing Lat/Lng coordinates and an order UUID/compound UUID to the tracker Manager

🚧

Constraints

  • Find me feature will work only for Merchants who enabled this feature in their configuration
  • Find me can only be activated once there is an actual driver en route with the customer's order so monitor the new FindMe object to detect when your order is now accepting 'Find Me' actions
  • You must obtain and provide customer coordinates by yourself to a FindMe request. current SDK doesn't not provide location services on its own.
/**
 *  sends a findme request for a specific order
 *
 *  @param uuid                 UUID of order
 *  @param lat                 latitude
 *  @param lng                 longitude
 *  @param completionHandler    callback handler
 */
- (void)sendFindMeRequestForOrderWithUUID:(NSString *_Nonnull)uuid
                                 latitude:(double)lat
                                longitude:(double)lng
                    withCompletionHandler:(nullable GGActionResponseHandler)completionHandler

Monitoring

Monitoring connection to Bringg Real Time services

provide status updates regarding to socket connection to the Real Time service

- (void)trackerDidConnect {
    NSLog(@"connected");
    
}

- (void)trackerDidDisconnectWithError:(NSError *)error {
    NSLog(@"disconnected %@", error);
   
}

Monitoring an Order

// start tracking an order by UUID and set delegate to recieve order updates
[self.trackerManager startWatchingOrderWithUUID:order.uuid delegate:self];

- (void)watchOrderFailForOrder:(GGOrder *)order error:(NSError *)error{
   
  NSLog(@"Failed %@, error %@", order.uuid, error);
}

- (void)orderDidAssignWithOrder:(GGOrder *)order withDriver:(GGDriver *)driver{
    
    NSLog(@"Order assigned %@ for driver %@", order.uuid, driver.uuid)
}

- (void)orderDidAcceptWithOrder:(GGOrder *)order withDriver:(GGDriver *)driver{
  
	 NSLog(@"Order accepted %@ for driver %@", order.uuid, driver.uuid);
}

- (void)orderDidStartWithOrder:(GGOrder *)order withDriver:(GGDriver *)driver{

    NSLog(@"Order started %@ for driver %@", order.uuid, driver.uuid);
}

- (void)orderDidArrive:(GGOrder *)order withDriver:(GGDriver *)driver{
  
	NSLog(@"Order arrived %@", order.uuid);
}

- (void)orderDidFinish:(GGOrder *)order withDriver:(GGDriver *)driver{
    NSLog(@"Order finished %@", order.uuid);
  
}

- (void)orderDidCancel:(GGOrder *)order withDriver:(GGDriver *)driver{
	NSLog(@"Order canceled %@", order.uuid);
   
}

- (void)order:(nonnull GGOrder *)order didUpdateLocation:(nullable GGSharedLocation *)sharedLocation findMeConfiguration:(nullable GGFindMe *)findMeConfiguration{
  NSLog(@"order with ID %ld did update shared location %@ find me configuration to %@", (long)order.orderid, sharedLocation.locationUUID , findMeConfiguration);
}

📘

Notes

you can use the orderDidAssignWithOrder:withDriver delegate method to get the assigned driver object and pass it to the startWatchingOrderWithUUID:delegate: method call.
location updates will start arriving only after driver starts the order. you will get notified that it happened by the orderDidStartWithOrder:withDriver delegate method

🚧

Important Note - you should cache your active order ID's and UUID's

if you get disconnected from real time updates or even the app crashes, upon reconnecting with the tracker and calling the startWatchingOrderWithUUID:delegate: method, the tracker will immediately call the appropriate delegate method representing the current status of the order, thus recovering all lost data and status of the order

Monitoring a Driver

To monitor a driver you need two arguments - the driver uuid and the share uuid
the driver uuid is retrieved by the OrderDelegate calls
the share uuid can be obtained in two ways:

  1. if the customer is signed in , use the http manager to getOrderByID:withCompletionHandler: the response will give a GGOrder object holding all needed information
  2. if the customer isn't signed in use Bringg API to obtain it as seen here.
// start tracking a driver using his UUID and the UUID of the shared location object (can be obtained from the GGOrder object). set the delegate to recieve driver updates
[self.trackerManager startWatchingDriverWithUUID:uuid shareUUID:shareuuid delegate:self];

- (void)watchDriverSucceedForDriver:(nullable GGDriver *)driver{
  NSLog(@"Monitoring success for %@" driver.uuid);
}

- (void)watchDriverFailedForDriver:(GGDriver *)driver error:(NSError *)error{
    NSLog(@"Monitoring failed for %@, error %@", driver.uuid, error);
}

- (void)driverLocationDidChangeWithDriver:(GGDriver *)driver{
    NSLog(@"driver %@  is at %f,%f",driver.uuid, driver.latitude, driver.longitude);
}

- (void)driverLocationDidChangedWithDriverUUID:(NSString *)driverUUID lat:(NSNumber *)lat lng:(NSNumber *)lng {
    NSLog(@"lat %@, lng %@", lat, lng);
    
}

Headers

GGHTTPClientManager

/**
 creates the bringg tracking client singelton

 @param developerToken developer token as given by bringg platform
 @param delegate connection delegate to track connection status of tracking client
 @return singelton
 */
+ (nonnull instancetype)clientWithDeveloperToken:(nonnull NSString *)developerToken connectionDelegate:(nonnull id<RealTimeDelegate>)delegate;



//MARK: -- Connection

/**
 connects the tracking client to Bringg platform
 */
- (void)connect;

/**
 disconnects tracking.
 */
- (void)disconnect;


/**
 check if client is connected to Bringg platform

 @return BOOL
 */
- (BOOL)isConnected;

/**
 *  perform a sign in request with a specific customers credentials
 *  @warning do not call this method before setting a valid developer token. also notice method call won't work without valid confirmation code and merchant Id
 *  @param name              name of customer (don't use email here)
 *  @param phone             phone number of customer
 *  @param confirmationCode  sms confirmation code
 *  @param merchantId        merchant id registered for the customer
 *  @param extras            additional arguments to add to the call
 *  @param completionHandler block to handle async service response
 */
- (void)signInWithName:(NSString * _Nullable)name
                 phone:(NSString * _Nullable)phone
                 email:(NSString * _Nullable)email
              password:(NSString * _Nullable)password
      confirmationCode:(NSString * _Nullable)confirmationCode
            merchantId:(NSString * _Nonnull)merchantId
                extras:(NSDictionary * _Nullable)extras
     completionHandler:(nullable GGCustomerResponseHandler)completionHandler;


/**
 *  tels if the customer is signed in
 *
 *  @return BOOL
 */
- (BOOL)isSignedIn;

/**
 *  retriesve the customer object of the signed in customer
 *
 *  @return GGCustomer
 */
- (nullable GGCustomer *)signedInCustomer;




//MARK: -- Tracking


/**
 *  starts watching an order using both order uuid and shared uuid
 *
 *  @param uuid       order uuid
 *  @param shareUUID share uuid
 *  @param delegate   delegate
 *  @throws if invalid or missing either order UUID or shared UUID
 */
- (void)startWatchingOrderWithUUID:(NSString *_Nonnull)uuid
                         shareUUID:(NSString *_Nonnull)shareUUID
                          delegate:(id <OrderDelegate> _Nullable)delegate;


/**
 *  starts watching an order using both order uuid and shared uuid
 *
 *  @param uuid       order uuid
 *  @param customerAccessToken customer access token
 *  @param delegate   delegate
 *  @throws if invalid or missing either order UUID or shared UUID
 */
- (void)startWatchingOrderWithUUID:(NSString *_Nonnull)uuid
               customerAccessToken:(NSString *_Nonnull)customerAccessToken
                          delegate:(id <OrderDelegate> _Nullable)delegate;


/**
 *  asks the real time service to start tracking a specific driver
 *
 *  @param uuid      uuid of driver
 *  @param shareUUID uuid of shared location object associated with a specific order
 *  @param delegate  object to recieve driver callbacks
 *  @see DriverDelegate
 */
- (void)startWatchingDriverWithUUID:(NSString *_Nonnull)driveruuid
                          shareUUID:(NSString *_Nonnull)shareUUID
                           delegate:(id <DriverDelegate> _Nullable)delegate;


/**
 *  asks the real time service to start tracking a specific driver using driver uuid and customer access token
 *
 *  @param uuid      uuid of driver
 *  @param delegate  object to recieve driver callbacks
 *  @see DriverDelegate
 */
- (void)startWatchingCustomerDriverWithUUID:(NSString *_Nonnull)uuid
                                   delegate:(id <DriverDelegate> _Nullable)delegate;

/**
 *  asks the real time service to start tracking a specific waypoint
 *
 *  @param waypointId id of waypoint
 *  @param order uuid of of order handling the waypoint
 *  @param delegate   object to recieve waypoint callbacks
 *  @see WaypointDelegate
 */
- (void)startWatchingWaypointWithWaypointId:(NSNumber *_Nonnull)waypointId
                               andOrderUUID:(NSString * _Nonnull)orderUUID
                                   delegate:(id <WaypointDelegate> _Nullable)delegate;


/**
 *  sends a findme request for a specific order
 *
 *  @param uuid                 UUID of order
 *  @param lat                 latitude
 *  @param lng                 longitude
 *  @param completionHandler    callback handler
 */
- (void)sendFindMeRequestForOrderWithUUID:(NSString *_Nonnull)uuid
                                 latitude:(double)lat
                                longitude:(double)lng
                    withCompletionHandler:(nullable GGActionResponseHandler)completionHandler;


/**
 send customer rating for a specific order

 @param order order to rate
 @param rating rating for order's driver - must be between (1-5)
 @param completionHandler block to handle async service response
 */
- (void)rateOrder:(nonnull GGOrder *)order
       withRating:(int)rating
completionHandler:(nullable GGRatingResponseHandler)completionHandler;

/**
 *  stops tracking a specific order
 *
 *  @param uuid uuid of order
 */
- (void)stopWatchingOrderWithUUID:(NSString *_Nonnull)uuid;


/**
 *  stop watching all orders
 */
- (void)stopWatchingAllOrders;

/**
 *  stops tracking a specific driver
 *
 *  @param uuid      uuid of driver
 */
- (void)stopWatchingDriverWithUUID:(NSString *_Nonnull)uuid;

/**
 *  stops watching all drivers
 */
- (void)stopWatchingAllDrivers;

/**
 *  stops tracking a specific waypoint
 *
 *  @param waypointId id of waypoint
 *  @param orderUUID uuid of order with waypoint
 */
- (void)stopWatchingWaypointWithWaypointId:(NSNumber * _Nonnull)waypointId andOrderUUID:(NSString * _Nonnull)orderUUID;

/**
 *  stops tracking all waypoints
 */
- (void)stopWatchingAllWaypoints;


/**
 *  return an order matching a uuid
 *
 *  @param uuid order uuid to search
 *
 *  @return GGOrder
 */
- (nullable GGOrder *)orderWithUUID:(nonnull NSString *)uuid;

/**
 *  tell if a specific order is being watched
 *
 *  @param uuid uuid of order in question
 *
 *  @return BOOL
 */
- (BOOL)isWatchingOrderWithUUID:(NSString *_Nonnull)uuid;



/**
 *  return a driver matching a uuid
 *
 *  @param uuid driver uuid to search
 *
 *  @return GGDriver
 */
- (nullable GGDriver *)driverWithUUID:(nonnull NSString *)uuid;

/**
 *  tell if a specific driver is being watched
 *
 *  @param uuid uuid of driver
 *
 *  @return BOOL
 */
- (BOOL)isWatchingDriverWithUUID:(NSString *_Nonnull)uuid;


/**
 *  return a shared uuid object matching a driver uuid
 *
 *  @param uuid driver uuid to search by
 *
 *  @return NSString
 */
- (nullable NSString *)shareUUIDForDriverWithUUID:(nonnull NSString*)driverUUID;

/**
 *  tell if a specific waypoint is being watched
 *
 *  @param waypointId id of waypoint
 *  @param orderUUID uuid of order
 *  @return BOOL
 */
- (BOOL)isWatchingWaypointWithWaypointId:(NSNumber *_Nonnull)waypointId andOrderUUID:(NSString * _Nonnull)orderUUID;

Class Delegates

RealTimeDelegate

/**
 *  notifies delegate that a socket connection has been made
 */
- (void)trackerDidConnect;

/**
 *  notifies the delegate that the tracker has disconnected the socket connection w/o and error
 *  @usage the tracker manager handles connection recoveries by its own if network allows it. so this notifications is just to give the delegete a change to updates its own model to whatever he desiers
 *  @param error an error describing connection error (might be nill if forced)
 */
- (void)trackerDidDisconnectWithError:(NSError * _Nullable)error;


@optional
/**
 *  delegate method to track the last date the tracker manager recieved data
 *
 *  @param eventDate date of event
 */
-(void)trackerDidRecieveDataEventAtDate:(NSDate * _Nonnull)eventDate;

OrderDelegate

/**
 *  notifies watch action for an order has succeed
 *
 *  @param order the order requesting watch
 */
- (void)watchOrderSucceedForOrder:(nonnull GGOrder *)order;

/**
 *  notifies watch action for an order has failed
 *
 *  @param order the order requesting watch
 *  @param error failure reason
 */
- (void)watchOrderFailForOrder:(nonnull GGOrder *)order error:(nonnull NSError *)error;


/**
 *  notifies an order was assigned to a driver
 *
 *  @param order  order
 *  @param driver driver assigned
 */
- (void)orderDidAssignWithOrder:(nonnull GGOrder *)order withDriver:(nonnull GGDriver *)driver;

/**
 *  notfies an order was accepted by a certain driver
 *
 *  @param order  order
 *  @param driver accepting driver
 */
- (void)orderDidAcceptWithOrder:(nonnull GGOrder *)order withDriver:(nonnull GGDriver *)driver;


/**
 *  notifies an order is starting its course to its destination
 *
 *  @param order  order
 *  @param driver driver of order
 */
- (void)orderDidStartWithOrder:(nonnull GGOrder *)order withDriver:(nonnull GGDriver *)driver;
@optional

/**
 *  notifies an order has arrived to one of it's destinations
 *
 *  @param order  order
 *  @param driver driver of order
 */
- (void)orderDidArrive:(nonnull GGOrder *)order withDriver:(nonnull GGDriver *)driver;


/**
 *  notifies an order delivery has been completed
 *
 *  @param order  order
 *  @param driver driver of order
 */
- (void)orderDidFinish:(nonnull GGOrder *)order withDriver:(nonnull GGDriver *)driver;

/**
 *  notifies an order has been cancled
 *
 *  @param order  order
 *  @param driver driver of order
 */
- (void)orderDidCancel:(nonnull GGOrder *)order withDriver:(nullable GGDriver *)driver;

/**
 *  notifies updates for shared locations and findme configuration for specific orders
 *
 *  @param order               the order
 *  @param sharedLocation      orders shared location object
 *  @param findMeConfiguration findme configuration object
 */
- (void)order:(nonnull GGOrder *)order didUpdateLocation:(nullable GGSharedLocation *)sharedLocation findMeConfiguration:(nullable GGFindMe *)findMeConfiguration;

/**
 *  notifies that the tracker is about to revive all previously monitored orders
 *
 *  @param orderUUID uuid of order
 */
- (void)trackerWillReviveWatchedOrder:(nonnull NSString *)orderUUID;

DriverDelegate

/**
 *  notifies if watching a driver succeed
 *
 *  @param waypointId id of driver
 */
- (void)watchDriverSucceedForDriver:(nullable GGDriver *)driver;

/**
 *  notifies if watching a driver failed
 *
 *  @param waypointId id of driver
 *  @param error      error
 */
- (void)watchDriverFailedForDriver:(nullable GGDriver *)driver error:(nonnull NSError *)error;
@optional

/**
 *  notifies a driver has changed location
 *
 *  @param driver the updated driver object
 */
- (void)driverLocationDidChangeWithDriver:(nonnull GGDriver *)driver;

/**
 *  notifies that the tracker is about to revive all previously monitored drivers
 *
 *  @param driverUUID uuid of driver
 *  @param sharedUUID uuid of shared
 */
- (void)trackerWillReviveWatchedDriver:(nonnull NSString *)driverUUID withSharedUUID:(nonnull NSString *)sharedUUID;

WaypointDelegate

/**
 *  notifies if watching a waypoint failed
 *
 *  @param waypointId id of waypoint
 *  @param error      error
 */
- (void)watchWaypointFailedForWaypointId:(nonnull NSNumber *)waypointId error:(nonnull NSError *)error;




/**
 notifies if watching waypoint succeeded

 @param waypointId id of waypoint
 @param waypoint the model of the waypoint
 */
- (void)watchWaypointSucceededForWaypointId:(nonnull NSNumber *)waypointId waypoint:(nonnull GGWaypoint *)waypoint;


/**
 *  notifies ETA updates to a waypoint
 *
 *  @param waypointId id of waypoint
 *  @param eta        ETA
 */
- (void)waypointDidUpdatedWaypointId:(nonnull NSNumber *)waypointId eta:(nullable NSDate *)eta;

@optional

/**
 *  notifies waypoint changed location
 *
 *  @param lat lat
 *  @param lng lng
 */
- (void)waypoint:(nonnull NSNumber *)waypointId didUpdatedCoordinatesToLat:(nonnull NSNumber *)lat lng:(nonnull NSNumber *)lng;


/**
 *  notifies a driver has arrvied a waypoint
 *
 *  @param waypointId id of waypoint
 */
- (void)waypointDidArrivedWaypointId:(nonnull NSNumber *)waypointId;

/**
 *  notifies a waypoint has finished
 *
 *  @param waypointId id of waypoint
 */
- (void)waypointDidFinishedWaypointId:(nonnull NSNumber *)waypointId;


/**
 *  notifies that the tracker is about to revive all previously monitored waypoints
 *
 *  @param waypointId id of waypoint
 */
- (void)trackerWillReviveWatchedWaypoint:(nonnull NSNumber *)waypointId;

🚧

Change Log

1.12.0

  • refactor for SDK to use only one endpoint class BringgTrackingClient

1.9.6

  • fixed issue with uploading apps to the app store
    1.9.5
  • removed dependency AFNetworking
    1.9.0
  • upgrade socket io lib to support socketIO 1.x

1.7.8.0

  • fixed bug in http manager in previous version
  • AFNetworking is now a dependency and not hard coded to the library

1.7.7.0

  • added support for find me feature

1.7.5.0

  • added support for order compound uuid

1.6.0.0

  • customerToken is no longer cached by SDK

1.5.1.0

  • fixed watching waypoint failure (method signature updated)

1.5.0.4

  • fixed NSCoding protocol implementation for GGWaypoint

1.5.0.3

  • fixed auto reconnection behaviour when manually disconnecting

1.5.0.2

  • improved updates sync
  • tracker now has a flag that allows disabling auto reconnection using setShouldAutoReconnect:

1.5.0.1

  • fix shared location synchronisation issues when using tracker with polling
  • fix shared driver synchronisation issues when using tracker with polling

1.5.0.0

  • HTTP & Tracker Manager allow connecting to custom domain via delegate method
  • HTTP & Tracker Manager now connect through secured connection by default ( can be changed by calling the 'useSecuredConnection:' method)
  • HTTP manager now allows to provide custom parameters via REST API calls
  • Tracker now handles socket disconnections and reconnections on its own . (no need to handle reconnections on your own)
  • appropriate delegates will get notified when watched orders/driver/waypoints are being revived due to tracker reconnecting itself after a connection error
  • All REST API completion blocks now also return the original response
  • REST API sign in method now allows to pass email and password

1.4.6.2

  • GGCustomer now conforms to NSCoding
  • customer object now holds facebookID for customers that registered with Facebook

1.4.6.1

  • added option to connect to tracker using SSL connection

1.4.5.1

  • updated shared location model
  • shared location and rating objects now conforms to NSCoding

1.4.4.4

  • fixed driver lat/lng data when order is accepted

1.4.4.3

  • fixed driver missing name & id data

1.4.4.2

  • fixed crash on connection

1.4.4.1

  • GGDriver now confirms to NSCoding
  • fixed issue where "isConnected" flag returned false positive

1.4.4

  • GGOrder & GGWaypoint now confirms to NSCoding
  • Waypoint model exposes start time, checkin time, done time

1.4.3

  • fixed issue where driver phone number was nil

1.4.2

  • added swift support
  • iOS 9 compatible

📘

Old version links