SDK Overview
NSCoders México
Mayo 16, 2017
http://bridgefy.me
contacto@bridgefy.me
¿Qué es Bridgefy?
Permite el envío y recepción de mensajes/paquetes sin necesidad de Internet a
través de la creación de redes mesh entre dispositivos móviles, sean Android o
iOS.
Principales características:
● Conexiones entre iOS/Android
● Manejo inteligente de batería
● No hay necesidad de jailbreak
● No se necesita hardware adicional
● Seguro
● SDK en Objective-C / Swift
Solución a problemas
Bridgefy se encarga de entregar y recibir los paquetes de una manera inteligente y
efectiva.
Algunos aspectos que resolvemos:
● No existe una ruta estática para el envío de mensajes
● El camino de ida no es el mismo camino de regreso
● Nodos inconstantes y en movimiento continuo
● Diferencias entre dispositivos móviles
¿App o SDK?
Comenzó como una aplicación de mensajería, evolucionamos a separar la
tecnología en un SDK.
¿Por qué?
● La tecnología es más que solo mensajería.
● Entendimos que el producto era la tecnología.
● Constantemente descubrimos nuevos casos de uso y nos entusiasman las
posibilidades.
Conexión entre iOS y Android
Swift/ObjectiveC
SDK disponible para desarrollo en:
● Swift
● Objective-C
Tipos de envío de paquetes
Envío de mensajes de uno a uno así como el envío de mensajes saltando a través
de los dispositivos cercanos de tres diferentes formas:
Mensajes directos Mesh Broadcast
Casos de uso
● Juegos de turno
● Check-in apps
● Eventos/Estadios
● Mensajería
● Apps de servicio de transporte
● Desastres naturales
Licencia
1. Regístrate
2. Genera tu licencia
3. Comienza a usar el SDK
Analytics
Quickstart
Registro: https://www.bridgefy.me/download-bridgefy.php
Github: https://github.com/bridgefy/bridgefy-ios-samples
Repositorios SDK
Tenemos 2 formas de agregar el SDK a los proyectos:
1. Descargar el framework desde
https://bitbucket.org/bridgefy/bridgefy-ios-dist y agregarlo manualmente.
2. Usando CocoaPods.
source 'https://bitbucket.org/bridgefy/bridgefypods.git'
target 'YOUR_TARGET' do
pod 'BFTransmitter'
end
Instanciado
//Objective-C
BFTransmitter * transmitter = [[BFTransmitter alloc] initWithApiKey:@"YOUR API
KEY"];
//BFTransmitterDelegate protocol must be implemented.
transmitter.delegate = self;
//Swift
let transmitter = BFTransmitter(apiKey: "YOUR API KEY")
//BFTransmitterDelegate protocol must be implemented.
transmitter.delegate = self
Iniciar/Detener el transmitter
//Objective-C
//Iniciar Transmitter
[transmitter start];
//Detener Transmitter
[transmitter stop];
//Swift
//Iniciar Transmitter
transmitter.start()
//Detener Transmitter
transmitter.stop()
//Objective C
//Detectar conexión con usuario
- (void)transmitter:(BFTransmitter *)transmitter didDetectConnectionWithUser:(NSString
*)userUser;
//Detectar desconexión con usuario
- (void)transmitter:(BFTransmitter *)transmitter didDetectDisconnectionWithUser:(NSString
*)userUser;
Detección de peers
//Swift
//Detectar conexión con usuario
public func transmitter(transmitter: BFTransmitter!, didDetectDisconnectionWithUser
userUser: String!)
//Detectar desconexión con usuario
public func transmitter(transmitter: BFTransmitter!, didDetectConnectionWithUser userUser:
String!)
Envío de información
//Objective-C
- (NSString * _Nullable)sendDictionary:(NSDictionary<NSString *, id> * _Nullable)dictionary
withData:(NSData * _Nullable)data
toUser:(NSString * _Nullable)user
options:(BFSendingOption)options
error:(NSError *_Nullable*_Nullable)error;
//Swift
func sendDictionary(dictionary: [String, AnyObject]?,
withData data: NSData?,
toUser user: String?,
options: BFSendingOption,
error: NSError?) -> String?
Opciones de envío
typedef NS_OPTIONS(NSUInteger, BFSendingOption) {
BFSendingOptionDirectTransmission = 0b0001,
BFSendingOptionMeshTransmission = 0b0010,
BFSendingOptionFullTransmission = 0b0011,
BFSendingOptionEncrypted = 0b0100,
BFSendingOptionNotEncrypted = 0b0000,
BFSendingOptionBroadcastReceiver = 0b1000,
};
Confirmación de envío directo
//Objective-C
- (void)transmitter:(BFTransmitter *)transmitter didSendDirectPacket:(NSString *)packetID;
//Swift
public func transmitter(transmitter: BFTransmitter, didSendDirectPacket packetID: String)
Mensaje enviado por mesh
//Objective-C
- (void)transmitter:(BFTransmitter *)transmitter meshDidAddPacket:(NSString *)packetID;
//Swift
public func transmitter(transmitter: BFTransmitter, meshDidAddPacket packetID: String)
Error en el envío
//Objective-C
- (void)transmitter:(BFTransmitter *)transmitter didFailForPacket:(NSString *)packetID
error:(NSError * _Nullable)error;
//Swift
public func transmitter(transmitter: BFTransmitter, didFailForPacket packetID: String,
error: NSError?)
Recepción de información
//Objective-C
- (void)transmitter:(BFTransmitter *)transmitter
didReceiveDictionary:(NSDictionary<NSString *, id> * _Nullable) dictionary
withData:(NSData * _Nullable)data
fromUser:(NSString *)user
packetID:(NSString *)packetID
broadcast:(BOOL)broadcast
mesh:(BOOL)mesh;
//Swift
public func transmitter(transmitter: BFTransmitter,
didReceiveDictionary dictionary: [String, AnyObject]?,
withData data: NSData?,
fromUser user: String,
packetID: String,
broadcast: Bool,
mesh: Bool)
Conexiones seguras
//Objective-C
- (BOOL)transmitter:(BFTransmitter *)transmitter shouldConnectSecurelyWithUser:(NSString
*)user;
//Swift
optional public func transmitter(transmitter: BFTransmitter, shouldConnectSecurelyWithUser
user: String) -> Bool
Conexiones seguras
//Objective-C
- (void)transmitter:(BFTransmitter *)transmitter didDetectSecureConnectionWithUser:(NSString
*)userUser;
//Swift
optional public func transmitter(transmitter: BFTransmitter,
didDetectSecureConnectionWithUser user: String)
Manejo de UUID
//Objective-C
if ([transmitter hasSession])
{
// The session exists
}
[transmitter destroySession];
//Swift
if (transmitter.hasSession)
{
// The session exists
}
transmitter.destroySession()
Modo background
//Objective-C
transmitter.backgroundModeEnabled = YES;
//Swift
transmitter.backgroundModeEnabled = true
Logs
typedef NS_ENUM(NSUInteger, BFLogLevel) {
BFLogLevelError = 0,
BFLogLevelInfo,
BFLogLevelDebug,
BFLogLevelTrace
};
//Objective-C
[BFTransmitter setLogLevel:BFLogLevelTrace]
//Swift
BFTransmitter.setLogLevel(BFLogLevel.Trace)
Exportando llaves públicas
//Objective-C
+(NSString *)localPublicKey;
//Swift
public class func localPublicKey() -> String!
Importando llaves públicas
//Objective-C
- (void)savePublicKey:(NSString *)key forUser:(NSString *)user;
//Swift
public func savePublicKey(key: String!, forUser user: String!)
Apps de prueba
https://github.com/bridgefy/bridgefy-ios-samples
BroadcastAlert
ChatSample
Tiempo de XCode
http://bridgefy.me
contacto@bridgefy.me
Registro: https://www.bridgefy.me/download-bridgefy.php
Github: https://github.com/bridgefy/bridgefy-ios-samples
Gracias por su atención
http://bridgefy.me
contacto@bridgefy.me
Registro: https://www.bridgefy.me/download-bridgefy.php
Github: https://github.com/bridgefy/bridgefy-ios-samples

Bridgefy SDK

  • 1.
    SDK Overview NSCoders México Mayo16, 2017 http://bridgefy.me contacto@bridgefy.me
  • 2.
    ¿Qué es Bridgefy? Permiteel envío y recepción de mensajes/paquetes sin necesidad de Internet a través de la creación de redes mesh entre dispositivos móviles, sean Android o iOS. Principales características: ● Conexiones entre iOS/Android ● Manejo inteligente de batería ● No hay necesidad de jailbreak ● No se necesita hardware adicional ● Seguro ● SDK en Objective-C / Swift
  • 3.
    Solución a problemas Bridgefyse encarga de entregar y recibir los paquetes de una manera inteligente y efectiva. Algunos aspectos que resolvemos: ● No existe una ruta estática para el envío de mensajes ● El camino de ida no es el mismo camino de regreso ● Nodos inconstantes y en movimiento continuo ● Diferencias entre dispositivos móviles
  • 4.
    ¿App o SDK? Comenzócomo una aplicación de mensajería, evolucionamos a separar la tecnología en un SDK. ¿Por qué? ● La tecnología es más que solo mensajería. ● Entendimos que el producto era la tecnología. ● Constantemente descubrimos nuevos casos de uso y nos entusiasman las posibilidades.
  • 5.
  • 6.
    Swift/ObjectiveC SDK disponible paradesarrollo en: ● Swift ● Objective-C
  • 7.
    Tipos de envíode paquetes Envío de mensajes de uno a uno así como el envío de mensajes saltando a través de los dispositivos cercanos de tres diferentes formas: Mensajes directos Mesh Broadcast
  • 8.
    Casos de uso ●Juegos de turno ● Check-in apps ● Eventos/Estadios ● Mensajería ● Apps de servicio de transporte ● Desastres naturales
  • 9.
    Licencia 1. Regístrate 2. Generatu licencia 3. Comienza a usar el SDK
  • 10.
  • 11.
  • 12.
    Repositorios SDK Tenemos 2formas de agregar el SDK a los proyectos: 1. Descargar el framework desde https://bitbucket.org/bridgefy/bridgefy-ios-dist y agregarlo manualmente. 2. Usando CocoaPods. source 'https://bitbucket.org/bridgefy/bridgefypods.git' target 'YOUR_TARGET' do pod 'BFTransmitter' end
  • 13.
    Instanciado //Objective-C BFTransmitter * transmitter= [[BFTransmitter alloc] initWithApiKey:@"YOUR API KEY"]; //BFTransmitterDelegate protocol must be implemented. transmitter.delegate = self; //Swift let transmitter = BFTransmitter(apiKey: "YOUR API KEY") //BFTransmitterDelegate protocol must be implemented. transmitter.delegate = self
  • 14.
    Iniciar/Detener el transmitter //Objective-C //IniciarTransmitter [transmitter start]; //Detener Transmitter [transmitter stop]; //Swift //Iniciar Transmitter transmitter.start() //Detener Transmitter transmitter.stop()
  • 15.
    //Objective C //Detectar conexióncon usuario - (void)transmitter:(BFTransmitter *)transmitter didDetectConnectionWithUser:(NSString *)userUser; //Detectar desconexión con usuario - (void)transmitter:(BFTransmitter *)transmitter didDetectDisconnectionWithUser:(NSString *)userUser; Detección de peers //Swift //Detectar conexión con usuario public func transmitter(transmitter: BFTransmitter!, didDetectDisconnectionWithUser userUser: String!) //Detectar desconexión con usuario public func transmitter(transmitter: BFTransmitter!, didDetectConnectionWithUser userUser: String!)
  • 16.
    Envío de información //Objective-C -(NSString * _Nullable)sendDictionary:(NSDictionary<NSString *, id> * _Nullable)dictionary withData:(NSData * _Nullable)data toUser:(NSString * _Nullable)user options:(BFSendingOption)options error:(NSError *_Nullable*_Nullable)error; //Swift func sendDictionary(dictionary: [String, AnyObject]?, withData data: NSData?, toUser user: String?, options: BFSendingOption, error: NSError?) -> String?
  • 17.
    Opciones de envío typedefNS_OPTIONS(NSUInteger, BFSendingOption) { BFSendingOptionDirectTransmission = 0b0001, BFSendingOptionMeshTransmission = 0b0010, BFSendingOptionFullTransmission = 0b0011, BFSendingOptionEncrypted = 0b0100, BFSendingOptionNotEncrypted = 0b0000, BFSendingOptionBroadcastReceiver = 0b1000, };
  • 18.
    Confirmación de envíodirecto //Objective-C - (void)transmitter:(BFTransmitter *)transmitter didSendDirectPacket:(NSString *)packetID; //Swift public func transmitter(transmitter: BFTransmitter, didSendDirectPacket packetID: String)
  • 19.
    Mensaje enviado pormesh //Objective-C - (void)transmitter:(BFTransmitter *)transmitter meshDidAddPacket:(NSString *)packetID; //Swift public func transmitter(transmitter: BFTransmitter, meshDidAddPacket packetID: String)
  • 20.
    Error en elenvío //Objective-C - (void)transmitter:(BFTransmitter *)transmitter didFailForPacket:(NSString *)packetID error:(NSError * _Nullable)error; //Swift public func transmitter(transmitter: BFTransmitter, didFailForPacket packetID: String, error: NSError?)
  • 21.
    Recepción de información //Objective-C -(void)transmitter:(BFTransmitter *)transmitter didReceiveDictionary:(NSDictionary<NSString *, id> * _Nullable) dictionary withData:(NSData * _Nullable)data fromUser:(NSString *)user packetID:(NSString *)packetID broadcast:(BOOL)broadcast mesh:(BOOL)mesh; //Swift public func transmitter(transmitter: BFTransmitter, didReceiveDictionary dictionary: [String, AnyObject]?, withData data: NSData?, fromUser user: String, packetID: String, broadcast: Bool, mesh: Bool)
  • 22.
    Conexiones seguras //Objective-C - (BOOL)transmitter:(BFTransmitter*)transmitter shouldConnectSecurelyWithUser:(NSString *)user; //Swift optional public func transmitter(transmitter: BFTransmitter, shouldConnectSecurelyWithUser user: String) -> Bool
  • 23.
    Conexiones seguras //Objective-C - (void)transmitter:(BFTransmitter*)transmitter didDetectSecureConnectionWithUser:(NSString *)userUser; //Swift optional public func transmitter(transmitter: BFTransmitter, didDetectSecureConnectionWithUser user: String)
  • 24.
    Manejo de UUID //Objective-C if([transmitter hasSession]) { // The session exists } [transmitter destroySession]; //Swift if (transmitter.hasSession) { // The session exists } transmitter.destroySession()
  • 25.
    Modo background //Objective-C transmitter.backgroundModeEnabled =YES; //Swift transmitter.backgroundModeEnabled = true
  • 26.
    Logs typedef NS_ENUM(NSUInteger, BFLogLevel){ BFLogLevelError = 0, BFLogLevelInfo, BFLogLevelDebug, BFLogLevelTrace }; //Objective-C [BFTransmitter setLogLevel:BFLogLevelTrace] //Swift BFTransmitter.setLogLevel(BFLogLevel.Trace)
  • 27.
    Exportando llaves públicas //Objective-C +(NSString*)localPublicKey; //Swift public class func localPublicKey() -> String!
  • 28.
    Importando llaves públicas //Objective-C -(void)savePublicKey:(NSString *)key forUser:(NSString *)user; //Swift public func savePublicKey(key: String!, forUser user: String!)
  • 29.
  • 30.
  • 31.
  • 32.
    Tiempo de XCode http://bridgefy.me contacto@bridgefy.me Registro:https://www.bridgefy.me/download-bridgefy.php Github: https://github.com/bridgefy/bridgefy-ios-samples
  • 33.
    Gracias por suatención http://bridgefy.me contacto@bridgefy.me Registro: https://www.bridgefy.me/download-bridgefy.php Github: https://github.com/bridgefy/bridgefy-ios-samples