注册

iOS 后台只要保持长连接 可以收到实时视频与语音的通知已解决

今天收个苹果客服电话 说在后台无法收到实时语音的通知 。
然后看了一下代码 原来环信把后台实时语音直接给kill掉了 然后自己就写了个本地通知 , 可是 点击通知的话  搞的emcallSession这个实例一直为空 无法进行通话。 然后和客服沟通一下 , 他说是也是本地通知, 但是直接跳到主界面 把call close掉 。
  我怕被拒。 
其实问题很简单 ,只需要判断下miancontroller, 就可以在后台收到实时语音与视频的通知 点进去还是call 界面。  然后就可以拒接和接受了。
 
已邀请:
666  附上代码就更好了
下面附上代码:
首先在mianviewcontroller 定义
@property (strong, nonatomic) CallViewController *callController;
@property (strong, nonatomic) EMCallSession *callSession;
在ChatdemoHelper.m  找到EMCallManagerDelegate 代理方法

BD4C003A-0AD2-451D-B8C1-2916CA079090.png


以次向下的几个方法中判断mian.callViewController

8AB620AA-01ED-4BC5-B070-0A64AF592172.png



14F2DAD2-8481-4476-A159-D959CF05D314.png



5BD52C85-E901-47F9-979F-7AD6EEC57B97.png




7A768103-BD9B-4EC8-A627-2EADA28234BB.png




11E64B4F-288A-4171-89CA-D6A7E4B51929.png


完了之后 在appdeldegate.m找到这个方法
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    if (_mainController) {
        [_mainController didReceiveLocalNotification:notification];
    }
}
然后就可以找到 didReceiveLocalNotification: mian里的这个方法 
需要改的地方我在下面图片中 因为还有其它的本地通知 用来区分


8F39BA0D-4F20-429E-A06E-A9CA489F03CD.png


 图片挂掉了 下面还有一个else 
    ChatViewController *chatViewController = nil;
               NSString *callChatter = userInfo[kwithCallChatter];
                if ([callChatter isEqualToString:@"call"]) {
                   self.callController=[[CallViewController alloc]initWithSession:self.callSession isCaller:NO status:NSLocalizedString(@"call.finished", "Establish call finished")];
                    self.callController.modalPresentationStyle = UIModalPresentationOverFullScreen;
                   [self presentViewController:self.callController animated:NO completion:nil];                                               
}else{
  NSString *conversationChatter = userInfo[kConversationChatter];
                    EMChatType messageType = [userInfo[kMessageType] intValue];
 
后面的我就不写啦 太长了  都一样

要回复问题请先登录注册