Use the terminal command uuidgen to create a user defined UUID.
As Paul mentioned, the value will be null until you read the value of the characteristic. It seems like a lot of work but after you discover a peripheral you connect to it (don't forget to retain the peripheral and set the peripheral's delegate property), then discover its services, then discover the characteristics for the services, then you may read the value of the characteristics like so:
[peripheral readValueForCharacteristic:characteristic]; //where peripheral is the connected CBPeripheral
In the CBCentralManagerDelegate method peripheral:didUpdateValueForCharacteristic:error: the value can be read:
NSLog(@"%@",[[NSString alloc]initWithData:characteristic.value encoding:NSUTF8StringEncoding]);
Based on the code you included, it is not necessary to include the advertisement data service UUID key in your options dictionary . If you would like to specify a data service UUID that is specific to your app, start advertisementing like this:
[_peripheralManager startAdvertising:@{CBAdvertisementDataLocalNameKey : @"Peripheral name",
CBAdvertisementDataServiceUUIDsKey : @[[CBUUID UUIDWithString:@"generated-string-using-uuidgen"]]}];
You can then set your CBCentralManager to scan for that specific data service uuid like this:
[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:@"generated-string-using-uuidgen"]] options:nil];