項目引入 protobuf 歷程

最近在做出行類的項目,需要socket上傳分發 location 數據,之前都是json數據,現在要改成protobuf,頭一次聽說這個東東,下面是搜到的一些內容,然後寫了一個demo,用Python實現了一個簡單的socket 服務端,簡單實現發送分發protobuf數據。閒話少說,讓我們先了解一下protobuf是什麼

  • protocol buffers 是一種語言無關、平臺無關、可擴展的序列化結構數據的方法,它可用於(數據)通信協議、數據存儲等。
  • Protocol Buffers 是一種靈活,高效,自動化機制的結構數據序列化方法

環境安裝

使用brew安裝,沒有安裝brew可以自行百度安裝

1.安裝依賴工具

$ brew install automake
$ brew install libtool

2.安裝protobuf

$ brew install protobuf

3.克隆 protobuf-objc

$ git clone https://github.com/alexeyxo/protobuf-objc.git

4.運行腳本 (切換到protobuf-objc路徑)

$  ./scripts/build.sh

創建編輯 proto 文件

syntax = 'proto3';

message Location {
    string accessToken = 1;
    string cdType = 2;
    string clientId = 3;
    string connectUser = 4;
    string direction = 5;
    double latitude = 6;
    double longitude = 7;
    string orderId = 8;
    float speed = 9;
    int64 timestamp = 10;
    float travelMile = 11;
    string type = 12;
}

轉化objc、py文件

使用protoc工具生成 Objective-C 和Python文件

$ protoc --proto_path=A --objc_out=B Location.proto
$ protoc --proto_path=A --python_out=B Location.proto
其中--proto_path=後跟A是需要處理的proto文件所在的文件夾,--objc_out=指明生成的是Objective-C代碼以及目標文件存放路徑,B是目標文件存放路徑,Location.proto是需要處理的文件。
--python_out=生成Python文件

至此,我們的準備工作就做完了,新建一個項目 姑且命名 protobufDemo,cocoapods集成protobuf,將生成的objc文件拖入到項目中因爲這兩個文件不支持ARC,設置編譯參數 TARGETS >> Build Phases >> Compile Sources >> Location.pbobjc.m 爲 -fno-objc-arc 。

簡單應用

#import "Location.pbobjc.h"

......

- (void)simple {
    Location *location = [[Location alloc]init];
    location.accessToken = @"base qw";
    location.orderId = @"orderid-123";
    location.clientId = @"clientid-123";
    location.latitude = 30.199544680748;
    location.longitude = 120.27409366925;
    location.speed = 0.25;
    
    NSData *data = [location data];
    
    Location *l = [Location parseFromData:data error:nil];
    NSLog(@"%.11f", l.longitude);
}

socket應用

建立socket連接,向服務端發送數據

[self.tcpSocket writeData:data withTimeout:-1 tag:110];

處理接收的數據

Location *location = [Location parseFromData:data error:nil];

protobufDemo

 

參考:

iOS下 安裝Protobuf(ProtocolBuffers)的詳細步驟

Protobuf3 教程

cocoapods 引入 三方庫 歷程

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章