Когда я отправляю данные с iOS на устройство Android с помощью Google рядом с сообщением API, обе стороны приложения сбой с помощью Google рядом с сообщением SDK - PullRequest
0 голосов
/ 26 сентября 2018

Когда я отправляю данные с iOS на устройство Android с помощью google-сообщения рядом с API-интерфейсом, обе стороны приложения аварийно завершают работу, поэтому я не могу понять, по какому формату я должен передать данные в методе публикации Google рядом с сообщениемapi.

Мой код здесь для отправки данных: -

func sendDataToBeacons()
{
self.mResponse = false
self.isTargeted = true
GNSMessageManager.setDebugLoggingEnabled(true)
let nearbyPermission = GNSPermission(changedHandler: { (granted: Bool) 
in
    // Update the UI here
})
let permissionState = GNSPermission.isGranted()
GNSPermission.setGranted(!permissionState)  // toggle the state
messageManager = GNSMessageManager(apiKey: "AIzaSyD-zlc1Tw6rClQDNtCxUq_QHZy2tlXxxbk",paramsBlock: { (params: GNSMessageManagerParams?) in
    guard let params = params else { return }
    params.microphonePermissionErrorHandler = { (hasError: Bool) in}
    params.bluetoothPowerErrorHandler = { (hasError: Bool) in}
    params.bluetoothPermissionErrorHandler = { (hasError: Bool) in}

})
var img : UIImage = updatedProfileDict[Constant.BASE6a4] as! UIImage
img = img.resizeCI(size: CGSize(width: 150, height: 150))!
let adate : NSData = UIImagePNGRepresentation(img)! as NSData
let strBase64 = adate.base64EncodedString(options: .lineLength64Characters)

var dict : [String : Any] = [:]

dict[Constant.UDID] = updatedProfileDict[Constant.UDID]
dict[Constant.DESCRIPTION] = updatedProfileDict[Constant.DESCRIPTION]
dict[Constant.BASE6a4] = strBase64
dict[Constant.MRESPONSE] = true
dict[Constant.ISTARGETED] = true
dict[Constant.MTARGETUUID] = updatedProfileDict[Constant.UDID]

print(dict)
let dataExample : NSData = NSKeyedArchiver.archivedData(withRootObject: dict) as NSData
//publication = messageManager?.publication(with:GNSMessage(content: dataExample as Data?))
    self.publication = self.messageManager?.publication(with: GNSMessage(content: dataExample as Data?), paramsBlock: { (params) in
        guard let params = params else { return }

        self.mResponse = true
        self.isTargeted = true

        params.strategy = GNSStrategy(paramsBlock: { (params: GNSStrategyParams?) in
            guard let params = params else { return }
            params.discoveryMediums = .BLE
            params.discoveryMode = .default

        })
    })
}

Код для получения данных: -

func readDataFromBeacons()
{
beaconSubscription = messageManager?.subscription(messageFoundHandler:  
{ (myMessageFoundHandler) in
    if let dictionary: [String : Any] = (NSKeyedUnarchiver.unarchiveObject(with: (myMessageFoundHandler?.content)!) as? [String : Any])
    {
        if let tempStr : String = dictionary[Constant.UDID] as? String
        {
          print(tempStr)
        }
    }

}, messageLostHandler: { (myMessageLostHandler) in
}, paramsBlock: { (params) in
    params?.deviceTypesToDiscover = .bleBeacon
    params?.messageNamespace = Constant.BUNDELIDENTIFIER
    params?.beaconStrategy =
        GNSBeaconStrategy(paramsBlock: { (params: GNSBeaconStrategyParams!) in
            params.includeIBeacons = true
            params.lowPowerPreferred = true
        })
})
}

Здесь мое приложение аварийно завершает работу в функции readDataFromBeacons () так же, как на стороне Android. Приложение аварийно завершается из-за несовпадения структуры форматов при отправке данных. Поэтому есть общая структура данных для совместного использования данных на разных устройствах с помощью Google поблизости.сообщение SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...