2017-05-30 50 views
1

我已經做了作爲the guide saysiOS和Google附近API:如何以正確的方式發佈和訂閱?

這則消息管理

[GNSMessageManager setDebugLoggingEnabled:YES]; 
messageManager = [[GNSMessageManager alloc] initWithAPIKey:API_KEY paramsBlock:^(GNSMessageManagerParams *params) { 
     params.bluetoothPowerErrorHandler = ^(BOOL hasError) { 
      // Update the UI for Bluetooth power 
     }; 
     params.bluetoothPermissionErrorHandler = ^(BOOL hasError) { 
      // Update the UI for Bluetooth permission 
     }; 
    }]; 

這是我的方法來發布和與附近的API訂閱。

- (IBAction)onPublish:(id)sender { 
    NSLog(@"publish"); 
    NSString* str = @"hello world"; 
    NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding]; 
    GNSMessage* message = [GNSMessage messageWithContent:data]; 
    id<GNSPublication> publication = [messageManager publicationWithMessage:message paramsBlock:^(GNSPublicationParams *publicationParams) { 
     publicationParams.strategy = [GNSStrategy strategyWithParamsBlock:^(GNSStrategyParams * strategyParams) { 
      strategyParams.allowInBackground = YES; 
      strategyParams.discoveryMediums = kGNSDiscoveryMediumsBLE; 
      strategyParams.discoveryMode = kGNSDiscoveryModeDefault; 
     }];; 
    }]; 
} 

- (IBAction)onSubscribe:(id)sender { 
    NSLog(@"subscribe"); 
    id<GNSSubscription> subscription = [messageManager subscriptionWithMessageFoundHandler:^(GNSMessage *msg) { 
     // Add the name to a list for display 
     NSLog(@"message found %@", [msg description]); 
    } messageLostHandler:^(GNSMessage *msg) { 
     // Add the name to a list for display 
     NSLog(@"message lost %@", [msg description]); 
    } paramsBlock:^(GNSSubscriptionParams *subscriptionParams) { 
     subscriptionParams.strategy = [GNSStrategy strategyWithParamsBlock:^(GNSStrategyParams * strategyParams) { 
      strategyParams.allowInBackground = YES; 
      strategyParams.discoveryMediums = kGNSDiscoveryMediumsBLE; 
      strategyParams.discoveryMode = kGNSDiscoveryModeDefault; 
     }];; 
    }]; 
} 

Bletooth中央和外圍背景功能都已啓用,並且設置了外圍設備的權限字符串。 最後,我在iOS設備上訂閱並從另一個發佈,但沒有任何反應。

回答

2

請務必保留髮布和訂閱對象。當他們被釋放時,他們停止發佈/訂閱。通常的方法是將它們作爲屬性/ ivars存儲在您的某個類中。

開發人員文檔在這一點上有誤導性,我很抱歉。我們將在下一版本中改進文檔。