CoreBluetooth establish peripheral connection when app is terminated
up vote
1
down vote
favorite
I have an iOS app which acts as a central
that connects to an external peripheral
via CoreBluetooth.
After I have connected to the peripheral
, I read and write data to it and then disconnect. Upon disconnect, I try to establish a connection once again so the next time the peripheral
goes into advertise
mode, the app will connect to it like so:
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
central.connect(peripheral, options: nil)
// More actions here...
}
It works great when the app is in the foreground
/ background
, but when terminated
, it doesn't work at all.
I have defined the CBCentralManager
with the CBCentralManagerOptionRestoreIdentifierKey
like so:
self.central = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey: Application.bluetoothRestoreIdentifier])
I have also implemented the willRestoreState
central delegate method:
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])
What am I doing wrong?
Thanks a lot!
ios swift core-bluetooth
add a comment |
up vote
1
down vote
favorite
I have an iOS app which acts as a central
that connects to an external peripheral
via CoreBluetooth.
After I have connected to the peripheral
, I read and write data to it and then disconnect. Upon disconnect, I try to establish a connection once again so the next time the peripheral
goes into advertise
mode, the app will connect to it like so:
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
central.connect(peripheral, options: nil)
// More actions here...
}
It works great when the app is in the foreground
/ background
, but when terminated
, it doesn't work at all.
I have defined the CBCentralManager
with the CBCentralManagerOptionRestoreIdentifierKey
like so:
self.central = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey: Application.bluetoothRestoreIdentifier])
I have also implemented the willRestoreState
central delegate method:
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])
What am I doing wrong?
Thanks a lot!
ios swift core-bluetooth
What do you do in thewillRestoreState
function?
– Paulw11
Nov 22 at 19:02
@Paulw11 getting the peripheral again from thedict[CBCentralManagerRestoredStatePeripheralsKey]
and trying to connect to it.
– EpicSyntax
Nov 25 at 12:41
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have an iOS app which acts as a central
that connects to an external peripheral
via CoreBluetooth.
After I have connected to the peripheral
, I read and write data to it and then disconnect. Upon disconnect, I try to establish a connection once again so the next time the peripheral
goes into advertise
mode, the app will connect to it like so:
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
central.connect(peripheral, options: nil)
// More actions here...
}
It works great when the app is in the foreground
/ background
, but when terminated
, it doesn't work at all.
I have defined the CBCentralManager
with the CBCentralManagerOptionRestoreIdentifierKey
like so:
self.central = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey: Application.bluetoothRestoreIdentifier])
I have also implemented the willRestoreState
central delegate method:
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])
What am I doing wrong?
Thanks a lot!
ios swift core-bluetooth
I have an iOS app which acts as a central
that connects to an external peripheral
via CoreBluetooth.
After I have connected to the peripheral
, I read and write data to it and then disconnect. Upon disconnect, I try to establish a connection once again so the next time the peripheral
goes into advertise
mode, the app will connect to it like so:
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
central.connect(peripheral, options: nil)
// More actions here...
}
It works great when the app is in the foreground
/ background
, but when terminated
, it doesn't work at all.
I have defined the CBCentralManager
with the CBCentralManagerOptionRestoreIdentifierKey
like so:
self.central = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey: Application.bluetoothRestoreIdentifier])
I have also implemented the willRestoreState
central delegate method:
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])
What am I doing wrong?
Thanks a lot!
ios swift core-bluetooth
ios swift core-bluetooth
edited Nov 22 at 18:58
Paulw11
66.7k1080100
66.7k1080100
asked Nov 22 at 15:55
EpicSyntax
751724
751724
What do you do in thewillRestoreState
function?
– Paulw11
Nov 22 at 19:02
@Paulw11 getting the peripheral again from thedict[CBCentralManagerRestoredStatePeripheralsKey]
and trying to connect to it.
– EpicSyntax
Nov 25 at 12:41
add a comment |
What do you do in thewillRestoreState
function?
– Paulw11
Nov 22 at 19:02
@Paulw11 getting the peripheral again from thedict[CBCentralManagerRestoredStatePeripheralsKey]
and trying to connect to it.
– EpicSyntax
Nov 25 at 12:41
What do you do in the
willRestoreState
function?– Paulw11
Nov 22 at 19:02
What do you do in the
willRestoreState
function?– Paulw11
Nov 22 at 19:02
@Paulw11 getting the peripheral again from the
dict[CBCentralManagerRestoredStatePeripheralsKey]
and trying to connect to it.– EpicSyntax
Nov 25 at 12:41
@Paulw11 getting the peripheral again from the
dict[CBCentralManagerRestoredStatePeripheralsKey]
and trying to connect to it.– EpicSyntax
Nov 25 at 12:41
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
You can save the peripheral's identifier. Then connect to the peripheral depending on the identifier.
add a comment |
up vote
0
down vote
Try with below code
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
let connectedperipherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral]
if let peripheral = connectedperipherals?.first {
central.connect(peripheral, options: nil)
}
}
This is exactly what I am doing. I think my problem is not when the app isterminated by the system
, I think it's when the app isterminated by the user
. Does that make any difference?
– EpicSyntax
Nov 25 at 12:46
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434545%2fcorebluetooth-establish-peripheral-connection-when-app-is-terminated%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
You can save the peripheral's identifier. Then connect to the peripheral depending on the identifier.
add a comment |
up vote
0
down vote
You can save the peripheral's identifier. Then connect to the peripheral depending on the identifier.
add a comment |
up vote
0
down vote
up vote
0
down vote
You can save the peripheral's identifier. Then connect to the peripheral depending on the identifier.
You can save the peripheral's identifier. Then connect to the peripheral depending on the identifier.
answered Nov 23 at 1:40
dowZhang
448
448
add a comment |
add a comment |
up vote
0
down vote
Try with below code
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
let connectedperipherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral]
if let peripheral = connectedperipherals?.first {
central.connect(peripheral, options: nil)
}
}
This is exactly what I am doing. I think my problem is not when the app isterminated by the system
, I think it's when the app isterminated by the user
. Does that make any difference?
– EpicSyntax
Nov 25 at 12:46
add a comment |
up vote
0
down vote
Try with below code
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
let connectedperipherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral]
if let peripheral = connectedperipherals?.first {
central.connect(peripheral, options: nil)
}
}
This is exactly what I am doing. I think my problem is not when the app isterminated by the system
, I think it's when the app isterminated by the user
. Does that make any difference?
– EpicSyntax
Nov 25 at 12:46
add a comment |
up vote
0
down vote
up vote
0
down vote
Try with below code
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
let connectedperipherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral]
if let peripheral = connectedperipherals?.first {
central.connect(peripheral, options: nil)
}
}
Try with below code
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
let connectedperipherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral]
if let peripheral = connectedperipherals?.first {
central.connect(peripheral, options: nil)
}
}
answered Nov 23 at 5:20
iOS_Maccus
3069
3069
This is exactly what I am doing. I think my problem is not when the app isterminated by the system
, I think it's when the app isterminated by the user
. Does that make any difference?
– EpicSyntax
Nov 25 at 12:46
add a comment |
This is exactly what I am doing. I think my problem is not when the app isterminated by the system
, I think it's when the app isterminated by the user
. Does that make any difference?
– EpicSyntax
Nov 25 at 12:46
This is exactly what I am doing. I think my problem is not when the app is
terminated by the system
, I think it's when the app is terminated by the user
. Does that make any difference?– EpicSyntax
Nov 25 at 12:46
This is exactly what I am doing. I think my problem is not when the app is
terminated by the system
, I think it's when the app is terminated by the user
. Does that make any difference?– EpicSyntax
Nov 25 at 12:46
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434545%2fcorebluetooth-establish-peripheral-connection-when-app-is-terminated%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What do you do in the
willRestoreState
function?– Paulw11
Nov 22 at 19:02
@Paulw11 getting the peripheral again from the
dict[CBCentralManagerRestoredStatePeripheralsKey]
and trying to connect to it.– EpicSyntax
Nov 25 at 12:41