Cihazın Eşlemesini Kaldır
Cihazın eşlemesini kaldırma işlemi, cihaz ile bağlı cihaz arasındaki eşleme ilişkisini kaldırır. Bu işlem, cihazı kalıcı olarak bağlantısını kesmeniz veya başka bir cihazla eşleme hazırlamanız gerektiğinde kullanışlıdır.
Ön Koşullar
Eşleme kaldırmadan önce şunlardan emin olun:
- Cihaz bağlı ve kararlı bir durumda
- Gerekli veri senkronizasyonu tamamlandı
- Kullanıcı, eşleme kaldırma işleminden sonra cihazın bağlantısının kesileceğini anlıyor
AI desteğiyle uygulayın
Bu iş akışını AI ile uygulayın
Resmî “AIBuds Cihaz Eşlemesini Kaldırma” becerisini kullanarak iş akışını uygulamanıza uyarlayın.
https://docs-aibuds.github.io/tr/skills/implement-aibuds-unpair-device adresini okuyup yönergeleri izleyin. Bu beceriyle “AIBuds Cihaz Eşlemesini Kaldırma” iş akışını iOS projesinde uygulayıp doğrulayın.API Referansı
Çerçeve
AIBuds.xcframework
İçe Aktarma
SDK'yı kullanmak istediğiniz dosyalarda ana başlığı içe aktarın:
- Swift
- Objective-C
import AIBuds#import <AIBuds/AIBuds.h>
#import <AIBuds/AIBuds-Swift.h>Protokol
unpair metodu aşağıdaki protokollü tanımlanmıştır. Protokol, temel cihaz API protokolünden miras alır.
- Swift
- Objective-C
/// Defines common device operations including unpairing
protocol DeviceCommonAPI: DeviceAPI {
/// Unpairs the device
/// - Parameters:
/// - completion: A completion callback that returns the operation result
/// - success: `true` if the operation succeeds, `false` otherwise
/// - error: An `NSError` object describing the error that occurred, or `nil` if the operation succeeds
func unpair(_ completion: AIBudsCompletionHandler?)
}/// Defines common device operations including unpairing
@protocol AIBudsDeviceCommonAPI <AIBudsDeviceAPI>
/// Unpairs the device
/// - Parameters:
/// - completion: A completion callback that returns the operation result
/// - success: `true` if the operation succeeds, `false` otherwise
/// - error: An `NSError` object describing the error that occurred, or `nil` if the operation
/// succeeds
- (void)unpairWithCompletion:(AIBudsCompletionHandler)completion;
@endÖrnek Metod
Cihazın bağlı cihazla olan eşlemesini kaldırır.
iOS 13.0+
- Swift
- Objective-C
/// Unpairs the device
/// - Parameters:
/// - completion: A completion callback that returns the operation result
/// - success: `true` if the operation succeeds, `false` otherwise
/// - error: An `NSError` object describing the error that occurred, or `nil` if the operation succeeds
func unpair(_ completion: AIBudsCompletionHandler?)/// Unpairs the device
/// - Parameters:
/// - completion: A completion callback that returns the operation result
/// - success: `true` if the operation succeeds, `false` otherwise
/// - error: An `NSError` object describing the error that occurred, or `nil` if the operation
/// succeeds
- (void)unpairWithCompletion:(AIBudsCompletionHandler)completion;Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
| completion | AIBudsCompletionHandler? | İşlem tamamlandığında çağrılan isteğe bağlı tamamlama geri çağrısı |
Geri Çağrı Parametreleri:
| Ad | Tür | Açıklama |
|---|---|---|
| success | Bool | İşlem başarılıysa true, aksi takdirde false |
| error | NSError? | İşlem başarısız olursa hata bilgilerini içerir, aksi takdirde nil |
Dönüş Değeri
Bu metot doğrudan bir değer döndürmez. Sonuç, tamamlama geri çağrısı aracılığıyla sağlanır.
Kullanım Örnekleri
- Swift
- Objective-C
import AIBuds
class DeviceManager {
/// Connected device
weak var device: DeviceConvertible?
/// Unpairs the connected device
func unpairDevice() {
// Check if the device supports the unpair protocol
guard let device = device as? DeviceCommonAPI else {
print("Device does not support unpairing")
return
}
// Execute unpair with completion handler
device.unpair { [weak self] success, error in
// Handle failure case
if !success {
let errorMessage = {
if let error = error {
return "\(error)"
}
return "Unknown error"
}()
print("Unpair failed: \(errorMessage)")
return
}
// Handle success case
print("Unpair completed successfully")
}
}
}#import <AIBuds/AIBuds.h>
@interface DeviceManager ()
/// Connected device
@property(weak, nonatomic) id<AIBudsDeviceConvertible> device;
@end
@implementation DeviceManager
- (void)unpairDevice {
__weak typeof(self) weakSelf = self;
id<AIBudsDeviceCommonAPI> device = (id<AIBudsDeviceCommonAPI>)self.device;
// Check if the device supports the unpair protocol
if ([device conformsToProtocol:@protocol(AIBudsDeviceCommonAPI)]) {
// Execute unpair with completion handler
[device unpairWithCompletion:^(BOOL success, NSError *_Nullable error) {
// Handle failure case
if (!success) {
NSLog(@"Unpair failed: %@", error);
return;
}
// Handle success case
NSLog(@"Unpair completed successfully");
}];
}
}
@endHata İşleme
Tamamlama işleyicisi aşağıdaki hata türlerini döndürebilir:
Hata Alanı: AIBudsSDK.ErrorDomain
- Swift
- Objective-C
| Hata Kodu | Açıklama | Kurtarma Önerisi |
|---|---|---|
| .deviceNotConnected | Cihaz bağlı değil | Cihazın eşleştirildiğinden ve bağlı olduğundan emin olun |
| .bleCommandExecFailedDueToTimeout | İşlem zaman aşımına uğradı | İşlemi yeniden deneyin |
| .deviceBusy | Cihaz başka bir işlemle meşgul | Devam eden işlemlerin tamamlanmasını bekleyin |
| .deviceNotSupport | Bu cihazda eşleme kaldırma desteklenmiyor | Çağırmadan önce cihaz yeteneklerini kontrol edin |
| Hata Kodu | Açıklama | Kurtarma Önerisi |
|---|---|---|
| AIBudsSdkErrorCodeDeviceNotConnected | Cihaz bağlı değil | Cihazın eşleştirildiğinden ve bağlı olduğundan emin olun |
| AIBudsSdkErrorCodeBleCommandExecFailedDueToTimeout | İşlem zaman aşımına uğradı | İşlemi yeniden deneyin |
| AIBudsSdkErrorCodeDeviceBusy | Cihaz başka bir işlemle meşgul | Devam eden işlemlerin tamamlanmasını bekleyin |
| AIBudsSdkErrorCodeDeviceNotSupport | Bu cihazda eşleme kaldırma desteklenmiyor | Çağırmadan önce cihaz yeteneklerini kontrol edin |
En İyi Uygulamalar
-
Kullanıcıyı Onaylayın: Eşleme kaldırmayı başlatmadan önce her zaman bir onay iletişim kutusu görüntüleyin, çünkü bu işlem cihazın bağlantısını kesecek ve yeniden eşleme gerektirecektir.
-
Arka Plan Yürütmeyi İşleyin: UI'yi güncellerken tamamlama işleyicisini bir
DispatchQueue.main.asyncbloğuna sarın. -
Zayıf Self Referansı: Retain döngülerini önlemek için tamamlama işleyicisinde
[weak self]kullanın. -
Protokol Uyumluluğunu Kontrol Edin: Metodu çağırmadan önce cihazın
DeviceCommonAPIprotokolüne uyduğunu doğrulayın. -
Bağlantı Kesmeyi İşleyin: Başarılı bir eşleme kaldırma işleminden sonra, cihaz bağlantısını düzgün bir şekilde işleyin ve yeniden eşleme için rehberlik sağlayın.
Platform Sınırlamaları
iOS Sistem Bluetooth Sınırlaması
iOS'ta, sistem Bluetooth ayarları uygulamaların Bluetooth cihazlarının eşlemesini programatik olarak kaldırmasına izin vermez. Bu, Apple tarafından güvenlik ve kullanıcı kontrolü için uygulanan sistem düzeyinde bir kısıtlamadır.
Bu ne anlama geliyor:
unpairçağırdıktan sonra bile, iOS cihaz için BLE eşleme bilgilerini saklayacaktır- Uygulama yeniden başlatıldığında veya Bluetooth etkinleştirildiğinde cihaz otomatik olarak yeniden bağlanabilir
- Cihaz iOS Ayarlar > Bluetooth'ta görünür kalacaktır
Önerilen Kullanıcı Rehberliği:
iOS uygulamanızda eşleme kaldırma işlevini uygularken, kullanıcıları iOS Ayarlarından manuel olarak eşleme kaldırmaya yönlendirmeniz gerekir:
- Tam eşleme kaldırma için: Kullanıcıları Ayarlar > Bluetooth'a gidin, cihazı bulun, "i" simgesine dokunun ve "Bu Cihazı Unut" seçeneğini seçin
- Açık UI geri bildirimi sağlayın: Kullanıcı eşleme kaldırmayı istediğinde talimatları veya Bluetooth ayarlarına derin bağlantıyı gösterin
- Uygulama düzeyinde bağlantı kesme:
unpairmetodu hala uygulamanız açısından cihazın bağlantısını kesecektir, ancak sistem eşlemesi kalacaktır
- Swift
- Objective-C
/// Prompt user to unpair from iOS Settings
func promptUserToUnpairFromSettings() {
// Show alert with instructions
let alert = UIAlertController(
title: "Unpair Device",
message:
"To completely unpair the device, go to Settings > Bluetooth, find your device, tap the 'i' icon next to it, then select 'Forget This Device'.",
preferredStyle: .alert
)
alert.addAction(
UIAlertAction(title: "Open Settings", style: .default) { _ in
// Deep link to Bluetooth settings
if let url = URL(string: "App-prefs:Bluetooth") {
UIApplication.shared.open(url)
}
})
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel))
// Present alert
if let viewController = UIApplication.shared.windows.first?.rootViewController {
viewController.present(alert, animated: true)
}
}/// Prompt user to unpair from iOS Settings
- (void)promptUserToUnpairFromSettings {
UIAlertController *alert = [UIAlertController
alertControllerWithTitle:@"Unpair Device"
message:@"To completely unpair the device, go to Settings > Bluetooth, "
@"find your device, tap the 'i' icon next to it, then select "
@"'Forget This Device'."
preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"Open Settings"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *_Nonnull action) {
NSURL *url =
[NSURL URLWithString:@"App-prefs:Bluetooth"];
if (url && [[UIApplication sharedApplication]
canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url
options:@{}
completionHandler:nil];
}
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel
handler:nil]];
UIViewController *viewController =
[UIApplication sharedApplication].windows.firstObject.rootViewController;
[viewController presentViewController:alert animated:YES completion:nil];
}Notlar
- Eşleme kaldırma komutu çalıştırıldıktan sonra cihazın bağlantısı kesilecektir
- Cihazın yeniden bağlanması için yeniden eşleme gerekecektir
- Tüm eşleme bilgileri her iki cihazdan da kaldırılacaktır
- Devam eden işlemler yarıda kesilecektir
- Eşleme kaldırma işlemi birkaç saniye sürebilir