Skip to content

基于<MutipeerConnectivity>封装的小框架。支持函数式语法糖,让你的代码更简练。GGMutipeerKit is a small framework based on the MutipeerConnectivity package. Support functional syntactic sugar to make your code more concise.

License

Notifications You must be signed in to change notification settings

GGWirelessConnect/GGMutipeerKit

Repository files navigation

logo

GGMutipeerKit 【Chinese | English

GGMutipeerKit是基于MultipeerConnectivity封装的小框架。支持函数式语法糖,让你的代码更简练。

1.安装

1)CocoaPods支持

pod 'GGMutipeerKit', '~> 0.0.1'

2)Carthage支持 coming soon

当然你也可以下载framework文件直接导入的项目中。

2.怎样使用?

1.传统方式

1)初始化

GGMultipeer *session = [[GGMultipeer alloc] init];

2)Brower模式

[session startBrowsingNearbyPeersToSessionWithDisplayName:@"server"];

@GGWeakObjc(session);
[session setConnectStateNotification:^(MCPeerID * _Nonnull peer, MCSessionState state, NSString * _Nonnull log) {
    @GGStrongObjc(session);
    if (state == MCSessionStateConnected) {
        [session sendMessage:@"hello"];
    }
}];

[session setReceivedMessageNotification:^(id  _Nonnull message, MCPeerID * _Nonnull fromPeer) {
    NSLog(@"server recieved message: %@",message);
}];

3)advertiser 模式

[session startBrowsingNearbyPeersToSessionWithDisplayName:@"client"];

[session setConnectStateNotification:^(MCPeerID * _Nonnull peer, MCSessionState state, NSString * _Nonnull log) {
    @GGStrongObjc(session);
    if (state == MCSessionStateConnected) {
        [session sendMessage:@"hello"];
    }
}];

[session setReceivedMessageNotification:^(id  _Nonnull message, MCPeerID * _Nonnull fromPeer) {
    NSLog(@"client recieved message: %@",message);
}];

2.函数式语法糖

1)初始化

GGMultipeer *session = [[GGMultipeer alloc] init];

2)Brower模式

session.start(BrowerMode,@"server",^(MCPeerID *peer, MCSessionState state,NSString *log) {
    if (state == MCSessionStateConnected) {
        session.message(@"hello",30,^(NSString *respondMessage,NSError *err) {
            NSLog(@"server recieved message: %@ err:%@",respondMessage,err);
        });
    }
});

3)advertiser 模式

session.start(AdvertiserMode,@"client",^(MCPeerID *peer, MCSessionState state,NSString *log) {
    if (state == MCSessionStateConnected) {
        session.message(@"world",30,^(NSString *respondMessage,NSError *err) {
            NSLog(@"client recieved message: %@ err:%@",respondMessage,err);
        });
    }
});

快速message模式:提供一键式messaage传输功能,无需等待握手。(注:仅支持一次数据传输)

1)初始化

GGMultipeer *session = [[GGMultipeer alloc] init];

2)Brower模式

session.onceMessageForAutomator(BrowerMode,@"server",@"hello",30,^(NSString *respondMsg,NSError *err){
               NSLog(@"server recieved message: %@ err:%@",respondMsg,err);
});

3)advertiser 模式

session.onceMessageForAutomator(AdvertiserMode,@"client",@"world",30,^(NSString *respondMsg,NSError *err){
           NSLog(@"client recieved message: %@ err:%@",respondMsg,err);
});

tips:由于ObjC的函数式语法糖实际上采用block调用方式实现,实质上并不是方法调用。书写时Xcode不会有提示。这里我采用了Snippets方式,这里是下载链接,导入到你的Xcode就可以享用了。

License

GGMutipeerKit 支持MIT开源协议.

issues and star

在使用过程中,若有问题,欢迎issus

当然也期待你给我个小 ⭐⭐⭐【Star】【Star】【Star】

About

基于<MutipeerConnectivity>封装的小框架。支持函数式语法糖,让你的代码更简练。GGMutipeerKit is a small framework based on the MutipeerConnectivity package. Support functional syntactic sugar to make your code more concise.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published