How do I end the call session on callkit from my custom ongoing call UI? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!How do I sort an NSMutableArray with custom objects in it?How to call Objective-C code from SwiftHanding over GSM call to VOIP call with CallKit leads to sound lossCustom background image with CallKit, And Twillio programmable voiceHow to resume a CallKit call on holdCallKit with two incoming callsIs it possible with CallKit Framework to make, answer and end telephonic call or is it used for VOIP call only?Ending Group Calls in CallkitDisabling Callkit from China Store Best Approach?Switching from CallKit UI to in-app UI

How to write capital alpha?

What does the writing on Poe's helmet say?

Is there public access to the Meteor Crater in Arizona?

Can you force honesty by using the Speak with Dead and Zone of Truth spells together?

Does the Mueller report show a conspiracy between Russia and the Trump Campaign?

Why is it faster to reheat something than it is to cook it?

Weaponising the Grasp-at-a-Distance spell

Caught masturbating at work

I can't produce songs

Why not use the yoke to control yaw, as well as pitch and roll?

How does light 'choose' between wave and particle behaviour?

Where is the Next Backup Size entry on iOS 12?

Random body shuffle every night—can we still function?

How can god fight other gods?

I got rid of Mac OSX and replaced it with linux but now I can't change it back to OSX or windows

i2c bus hangs in master RPi access to MSP430G uC ~1 in 1000 accesses

Simple HTTP Server

After Sam didn't return home in the end, were he and Al still friends?

White walkers, cemeteries and wights

How to align enumerate environment inside description environment

Simple Line in LaTeX Help!

Is it dangerous to install hacking tools on my private linux machine?

What are the main differences between the original Stargate SG-1 and the Final Cut edition?

How to change the tick of the color bar legend to black



How do I end the call session on callkit from my custom ongoing call UI?



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!How do I sort an NSMutableArray with custom objects in it?How to call Objective-C code from SwiftHanding over GSM call to VOIP call with CallKit leads to sound lossCustom background image with CallKit, And Twillio programmable voiceHow to resume a CallKit call on holdCallKit with two incoming callsIs it possible with CallKit Framework to make, answer and end telephonic call or is it used for VOIP call only?Ending Group Calls in CallkitDisabling Callkit from China Store Best Approach?Switching from CallKit UI to in-app UI



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















When a user end a call from the CallKit UI the app ends the call and the actual VOIP call also end. But when I end the call from my custom UI the VOIP call ends but the CallKit is still active. How do I end the CallKit session from my custom UI?



This is what happens when I press end call on the CallKit UI:



 func provider( _ provider: CXProvider, perform action: CXEndCallAction) 
XCPjsua.shared()?.endCall()
action.fulfill()



This is what happens when I end call from my custom UI (Should I close CallKit here?):



-(void)endcall

[[XCPjsua sharedXCPjsua] endCall];











share|improve this question




























    0















    When a user end a call from the CallKit UI the app ends the call and the actual VOIP call also end. But when I end the call from my custom UI the VOIP call ends but the CallKit is still active. How do I end the CallKit session from my custom UI?



    This is what happens when I press end call on the CallKit UI:



     func provider( _ provider: CXProvider, perform action: CXEndCallAction) 
    XCPjsua.shared()?.endCall()
    action.fulfill()



    This is what happens when I end call from my custom UI (Should I close CallKit here?):



    -(void)endcall

    [[XCPjsua sharedXCPjsua] endCall];











    share|improve this question
























      0












      0








      0








      When a user end a call from the CallKit UI the app ends the call and the actual VOIP call also end. But when I end the call from my custom UI the VOIP call ends but the CallKit is still active. How do I end the CallKit session from my custom UI?



      This is what happens when I press end call on the CallKit UI:



       func provider( _ provider: CXProvider, perform action: CXEndCallAction) 
      XCPjsua.shared()?.endCall()
      action.fulfill()



      This is what happens when I end call from my custom UI (Should I close CallKit here?):



      -(void)endcall

      [[XCPjsua sharedXCPjsua] endCall];











      share|improve this question














      When a user end a call from the CallKit UI the app ends the call and the actual VOIP call also end. But when I end the call from my custom UI the VOIP call ends but the CallKit is still active. How do I end the CallKit session from my custom UI?



      This is what happens when I press end call on the CallKit UI:



       func provider( _ provider: CXProvider, perform action: CXEndCallAction) 
      XCPjsua.shared()?.endCall()
      action.fulfill()



      This is what happens when I end call from my custom UI (Should I close CallKit here?):



      -(void)endcall

      [[XCPjsua sharedXCPjsua] endCall];








      ios swift xcode swift4.2 callkit






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 22 at 11:47









      Coder_98Coder_98

      225




      225






















          2 Answers
          2






          active

          oldest

          votes


















          1














          If you want to end the call from your custom UI you should do that through a CXTransaction:



          let callController = CXCallController()

          let endCallAction = CXEndCallAction(call: aUUID)
          callController.request(
          CXTransaction(action: endCallAction),
          completion: error in
          if let error = error

          print("Error: (error)")

          else

          print("Success")

          )


          this will cause provider(_ provider: CXProvider, perform action: CXEndCallAction) to be called.



          In all other cases (i.e. remote ended, unanswered, etc... - see CXCallEndedReason) you should only report the ended call:



          let provider: CXProvider

          provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)


          in this case provider(_ provider: CXProvider, perform action: CXEndCallAction) will not be called.






          share|improve this answer






























            0














            I managed to close it using the reportCall function



             provider?.reportCall(with: appG.uuid, endedAt: Date(), reason: .remoteEnded)


            So I just call that function when I press end call from my custom UI






            share|improve this answer























              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
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55298930%2fhow-do-i-end-the-call-session-on-callkit-from-my-custom-ongoing-call-ui%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









              1














              If you want to end the call from your custom UI you should do that through a CXTransaction:



              let callController = CXCallController()

              let endCallAction = CXEndCallAction(call: aUUID)
              callController.request(
              CXTransaction(action: endCallAction),
              completion: error in
              if let error = error

              print("Error: (error)")

              else

              print("Success")

              )


              this will cause provider(_ provider: CXProvider, perform action: CXEndCallAction) to be called.



              In all other cases (i.e. remote ended, unanswered, etc... - see CXCallEndedReason) you should only report the ended call:



              let provider: CXProvider

              provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)


              in this case provider(_ provider: CXProvider, perform action: CXEndCallAction) will not be called.






              share|improve this answer



























                1














                If you want to end the call from your custom UI you should do that through a CXTransaction:



                let callController = CXCallController()

                let endCallAction = CXEndCallAction(call: aUUID)
                callController.request(
                CXTransaction(action: endCallAction),
                completion: error in
                if let error = error

                print("Error: (error)")

                else

                print("Success")

                )


                this will cause provider(_ provider: CXProvider, perform action: CXEndCallAction) to be called.



                In all other cases (i.e. remote ended, unanswered, etc... - see CXCallEndedReason) you should only report the ended call:



                let provider: CXProvider

                provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)


                in this case provider(_ provider: CXProvider, perform action: CXEndCallAction) will not be called.






                share|improve this answer

























                  1












                  1








                  1







                  If you want to end the call from your custom UI you should do that through a CXTransaction:



                  let callController = CXCallController()

                  let endCallAction = CXEndCallAction(call: aUUID)
                  callController.request(
                  CXTransaction(action: endCallAction),
                  completion: error in
                  if let error = error

                  print("Error: (error)")

                  else

                  print("Success")

                  )


                  this will cause provider(_ provider: CXProvider, perform action: CXEndCallAction) to be called.



                  In all other cases (i.e. remote ended, unanswered, etc... - see CXCallEndedReason) you should only report the ended call:



                  let provider: CXProvider

                  provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)


                  in this case provider(_ provider: CXProvider, perform action: CXEndCallAction) will not be called.






                  share|improve this answer













                  If you want to end the call from your custom UI you should do that through a CXTransaction:



                  let callController = CXCallController()

                  let endCallAction = CXEndCallAction(call: aUUID)
                  callController.request(
                  CXTransaction(action: endCallAction),
                  completion: error in
                  if let error = error

                  print("Error: (error)")

                  else

                  print("Success")

                  )


                  this will cause provider(_ provider: CXProvider, perform action: CXEndCallAction) to be called.



                  In all other cases (i.e. remote ended, unanswered, etc... - see CXCallEndedReason) you should only report the ended call:



                  let provider: CXProvider

                  provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)


                  in this case provider(_ provider: CXProvider, perform action: CXEndCallAction) will not be called.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Mar 22 at 14:42









                  MarcoMarco

                  7916




                  7916























                      0














                      I managed to close it using the reportCall function



                       provider?.reportCall(with: appG.uuid, endedAt: Date(), reason: .remoteEnded)


                      So I just call that function when I press end call from my custom UI






                      share|improve this answer



























                        0














                        I managed to close it using the reportCall function



                         provider?.reportCall(with: appG.uuid, endedAt: Date(), reason: .remoteEnded)


                        So I just call that function when I press end call from my custom UI






                        share|improve this answer

























                          0












                          0








                          0







                          I managed to close it using the reportCall function



                           provider?.reportCall(with: appG.uuid, endedAt: Date(), reason: .remoteEnded)


                          So I just call that function when I press end call from my custom UI






                          share|improve this answer













                          I managed to close it using the reportCall function



                           provider?.reportCall(with: appG.uuid, endedAt: Date(), reason: .remoteEnded)


                          So I just call that function when I press end call from my custom UI







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Mar 22 at 12:55









                          Coder_98Coder_98

                          225




                          225



























                              draft saved

                              draft discarded
















































                              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.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55298930%2fhow-do-i-end-the-call-session-on-callkit-from-my-custom-ongoing-call-ui%23new-answer', 'question_page');

                              );

                              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







                              Popular posts from this blog

                              Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

                              Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

                              Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript