接收器如何在Sinch接听电话?

时间:2016-07-09 17:50:54

标签: ios objective-c sinch

我正在查看代码,特别是使用呼叫按钮启动呼叫的主视图控制器。输入要在数据库中找到的名称后,两个用户都必须位于此View Controller上。

但我对如何通知被叫方以及 如何将其分段到一个表示可以应答或挂断的呼叫视图控制器感到困惑。

我知道prepareForSegue会将呼叫设置为无论谁呼叫,但我仍然会在此之后与剩下的几行混淆。

所以请注意最后两个委托方法:第一个委托方法执行segue,这是有道理的。但是第二个怎么样呢,因为我对它如何分割成让被叫者回答或拒绝的呼叫视图控制器感到困惑。

MainViewController.m

#import "MainViewController.h"
#import "CallViewController.h"

#import <Sinch/Sinch.h>

@interface MainViewController () <SINCallClientDelegate>
@end

@implementation MainViewController

- (id<SINClient>)client {
  return [(AppDelegate *)[[UIApplication sharedApplication] delegate] client];
}

- (void)awakeFromNib {
  self.client.callClient.delegate = self;
}

- (IBAction)call:(id)sender {
  if ([self.destination.text length] > 0 && [self.client isStarted]) {
    id<SINCall> call = [self.client.callClient callUserWithId:self.destination.text];
    [self performSegueWithIdentifier:@"callView" sender:call];

  }
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  CallViewController *callViewController = [segue destinationViewController];
  callViewController.call = sender;
}

#pragma mark - SINCallClientDelegate
// Outgoing Call?
- (void)client:(id<SINCallClient>)client didReceiveIncomingCall:(id<SINCall>)call {

  [self performSegueWithIdentifier:@"callView" sender:call];
}
// Incoming Call?
- (SINLocalNotification *)client:(id<SINClient>)client localNotificationForIncomingCall:(id<SINCall>)call {
  SINLocalNotification *notification = [[SINLocalNotification alloc] init];
  notification.alertAction = @"Answer";
  notification.alertBody = [NSString stringWithFormat:@"Incoming call from %@", [call remoteUserId]];
  return notification;
}

2 个答案:

答案 0 :(得分:0)

  

但是第二个呢,因为我很困惑它如何进入调用视图控制器,让被调用者回答或拒绝

header向您解释会发生什么:

  

SINCallClient将使用返回值来安排...一个UILocalNotification。 UILocalNotification在被用户触发并采取行动时,应该与之结合使用   -[SINClient relayLocalNotification:]

答案 1 :(得分:0)

  • (void)client:(id)client didReceiveIncomingCall:(id)call {

    [self performSegueWithIdentifier:@“callView”sender:call]; }

当应用程序处于前台并且传入呼叫处于prgress状态时会调用

,它将通过调用方式推送视图控制器,并且由于其方向是传入的,因此将显示答案拒绝按钮,

  • (SINLocalNotification *)客户端:(id)客户端localNotificationForIncomingCall:(id)call { SINLocalNotification * notification = [[SINLocalNotification alloc] init]; notification.alertAction = @“答案”; notification.alertBody = [NSString stringWithFormat:@“来自%@的来电,[call remoteUserId]]; 退货通知; }
当应用程序是后台并启用了推送

时,会调用