Когда приложение находится в фоновом режиме и происходит входящий звонок, и пользователь не взял его. Когда пользователь возвращается в приложение, вызывается - (void)client:(id<SINCallClient>)client didReceiveIncomingCall:(id<SINCall>)call
.didReceiveIncomingCall называется, хотя это пропущенный звонок
Шаги по воспроизведению
- пользователя о вызывающем абоненте
- пользователя B приемник
- Пользователь B имеет приложение в фоновом режиме
- Пользователь B вызывает пользователь А
- Пользователь B вешает вызов до пользователь A поднимает
- Пользователь B открывает приложение, и
- (void)client:(id<SINCallClient>)client didReceiveIncomingCall:(id<SINCall>)call
получает сразу же вызов, аcall.status
- 0 с oSINCallStateInitiating
Это нормальное поведение? Есть ли способ узнать, что этот вызов больше не «доступен»?
Я работаю с прошивкой 10 и Sinch версии: 3.9.7-26289c8
Спасибо!
EDIT
Отображение кода, как я инициализировать Sinch клиент, сведущих Push, уведомления и т.д. Все ниже код происходит внутри AppDelegate
AppDelegate
@interface AppDelegate()<SINCallClientDelegate,SINManagedPushDelegate,SINClientDelegate>
Инициализация SINManagedPush:
AppDelegate в didFinishLaunchingWithOptions
self.push = [Sinch managedPushWithAPSEnvironment:SINAPSEnvironmentAutomatic];
self.push.delegate = self;
[self.push setDesiredPushTypeAutomatically];
Инициализация Sinch клиента: как только пользователь вошел в систему
- (void)initSinchClientWithUserId:(NSString *)userId {
if (!_client) {
_client = [Sinch clientWithApplicationKey:[BCEnvironment sinchAppKey]
applicationSecret:[BCEnvironment sinchAppSecret]
environmentHost:[BCEnvironment sinchEnvHost]
userId:userId];
BCUser *user = [BCDataProvider loggedInUser];
[self.push setDisplayName:[user displayName]];
_client.delegate = self;
_client.callClient.delegate = self;
[_client setSupportCalling:YES];
[_client enableManagedPushNotifications];
[_client start];
}
}
Регистрация для удаленных уведомлений
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[self.push application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
Получение толчок уведомление
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
[self.push application:application didReceiveRemoteNotification:userInfo];
}
SINManagedPushDelegate
- (void)managedPush:(id<SINManagedPush>)unused didReceiveIncomingPushWithPayload:(NSDictionary *)payload forType:(NSString *)pushType {
[self.client relayRemotePushNotification:payload];
}
SINCallClientDelegate -> Это называется не имеет значения, если вызов не "существует" больше
- (void)client:(id<SINCallClient>)client didReceiveIncomingCall:(id<SINCall>)call {
//This opens the calling screen, even if the call is "old" and the caller has already hangup or the call timed out, etc. Here is where I am having the issue
[[NSNotificationCenter defaultCenter] postNotificationName:@"DidReceiveCall" object:nil userInfo:@{@"call":call}];
}
Я столкнулся же вопрос. при открытии приложения после пропущенного вызова он перенаправляет меня на экран вызова, так как я получаю инициирование вызова. –