Last Updated on : 2024-03-04 08:35:05
This topic describes sample code related to the P2P operation based on the robot vacuum SDK.
Sample code
#import "ThingSmartSweeperBestPractices.h"
#import <ThingSmartSweeperKit/ThingSmartSweeperKit.h>
@interface ThingSmartSweeperP2PBestPractices()
@property (nonatomic,strong) ThingSmartSweeperDevice *p2pDevice;
@property (nonatomic, copy) NSString *devId;
@property (nonatomic,assign) NSInteger downloadType;
@end
@implementation ThingSmartSweeperP2PBestPractices
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
#pragma mark - P2P data channel
- (void)initP2PSDK:(NSString*)devId {
[self initConfig];
self.devId = devId;
self.p2pDevice = [ThingSmartSweeperDevice deviceWithDeviceId:devId];
}
- (void)connectDeviceByP2P{
if (![self.p2pDevice P2PActiveCheck]){
weakify(self)
[self.p2pDevice connectDeviceByP2P:^{
NSLog(@"P2P connection was successful");
strongif(self)
[self startObserverSweeperDataByP2P:self.devId downloadType:self.downloadType];
} failure:^(NSError * _Nullable error) {
NSLog(@"P2P connection failed: %@",error);
}];
}
}
- (void)startObserverSweeperDataByP2P:(NSString*)devId downloadType:(NSInteger)downloadType{
self.downloadType = downloadType;
weakify(self);
[self.p2pDevice startObserverSweeperDataByP2P:downloadType receiveP2PData:^(NSDictionary * _Nonnull data) {
if (data) {
NSLog(@"onMapDataReceiveByP2P is %@",data);
}
} failure:^(NSError * _Nullable error) {
NSLog(@"onP2PError is %@",error);
}];
}
- (void)stopObserverSweeperDataByP2P{
[self.p2pDevice stopObserverSweeperDataByP2P:^{
NSLog(@"Data download was closed successfully");
} failure:^(NSError * _Nullable error) {
NSLog(@"Failed to close data download: %@",error);
}];
}
- (void)deInitP2PSDK:(NSString*)devId {
[self.p2pDevice onDestroyP2P];
}
#pragma mark - private
-(void)initConfig {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(p2p_cancelDownload) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(p2p_startDownload) name:UIApplicationWillEnterForegroundNotification object:nil];
weakify(self)
NetworkStatusChanged(self, ^(NetworkStatus status) {
strongif(self)
if (status == NetworkStatusUnknown || status == NetworkStatusUnreachable) {
[self p2p_cancelDownload];
} else {
[self p2p_startDownload];
}
});
}
-(void)p2p_cancelDownload {
// Disconnect the P2P channel
[self.p2pDevice onDestroyP2P];
}
-(void)p2p_startDownload {
[self connectDeviceByP2P];
}
@end
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback