Some questions about iOS7 support's current state in PJSIP

PP
Pockány, Pockány
Fri, Oct 4, 2013 3:57 PM

Hi!

I just want to ask you about the following 3 topics :

1.: I've seen that you have already started to work on iOS7 support. When
will it be Production Ready?

2.: Do you plan to handle AVAudioSessionMediaServicesWereResetNotification
( link :
https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#//apple_ref/c/data/AVAudioSessionMediaServicesWereResetNotification)?

Maybe it is not required based on the WWDC2013 video 602's (titled : What’s
New in Core Audio for iOS) speaker's comments (you can read his coments
below), but if you think so, please implement it's handling.

If you haven't implemented it's handling yet, and you think that it is
required than my question is : When will it be Production Ready?

Here is the speaker's comments from the video :
"One other bit of a housekeeping here : you can make your application more
roboust if you handle MediaServicesReset "correctly". It's a little bit
hard to test this sometimes... ooops... aaaa... but aaaa.... I find my way
back... ammm.... but... if you implement this your application will
survive... hahahahah....

So... when this happens you will find out that all of your inter-app audio
connections have been broken; the component instances have been invalidated.

So in a host application you should dispose your node audio unit AURemoteIO
and in a node application you should also dispose your AURemoteIO; So in
general it's simplest to dispose your entire audio engine including those
Apple Audio Objects and then start over from scratch as if your app has
just been launched. That's the simplest way to roboustly handle the
MediaServicesBeenReset."

3.: iOS7 introduced a new Privacy Setting in iOS7 : The possibility to
restrict Microphone Access to specified applications determined by the user.

It works this way:

  • Let's assume that the user installed the app that uses PJSIP for the
    first time.
  • The first time when the app tries to use the microphone of the device
    (using PJSIP), a dialog appears that asks the user if he wants to give the
    access to the app for the device's microphone.
  • If the user gives the access, everything goes well
  • but if the user doesn't give the access - as I see - the app that uses
    PJSIP is not notified about it in any way
    ** and let's assume that a year have been passed after the denial happened
    : Based on Apple's documentations in this topic : the dialog about the
    Microphone Access request won't appear again; The user can enable
    microphone access only if he goes into the device's Settings application,
    and navigates into Privacy Settings -> Microphone, and enables the access
    again. Let's assume that he doesn't know this : in this case he just sits
    there, and doesn't know why isn't the app working : why it isn't it
    processing his voice.

My question about this is :

What do you recommend? Where should this problem be handled? On the app
side, that uses PJSIP (by checking the microphone's state before trying to
use PJSIP), or PJSIP handles this, and provides a callback or something to
give information about it (that the access to use the microphone have not
been given to the app) to the app?

Thanks for your help in advance!

Regards,
pockany

Hi! I just want to ask you about the following 3 topics : 1.: I've seen that you have already started to work on iOS7 support. When will it be Production Ready? 2.: Do you plan to handle AVAudioSessionMediaServicesWereResetNotification ( link : https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#//apple_ref/c/data/AVAudioSessionMediaServicesWereResetNotification)? Maybe it is not required based on the WWDC2013 video 602's (titled : What’s New in Core Audio for iOS) speaker's comments (you can read his coments below), but if you think so, please implement it's handling. If you haven't implemented it's handling yet, and you think that it is required than my question is : When will it be Production Ready? Here is the speaker's comments from the video : "One other bit of a housekeeping here : you can make your application more roboust if you handle MediaServicesReset "correctly". It's a little bit hard to test this sometimes... ooops... aaaa... but aaaa.... I find my way back... ammm.... but... if you implement this your application will survive... hahahahah.... So... when this happens you will find out that all of your inter-app audio connections have been broken; the component instances have been invalidated. So in a host application you should dispose your node audio unit AURemoteIO and in a node application you should also dispose your AURemoteIO; So in general it's simplest to dispose your entire audio engine including those Apple Audio Objects and then start over from scratch as if your app has just been launched. That's the simplest way to roboustly handle the MediaServicesBeenReset." 3.: iOS7 introduced a new Privacy Setting in iOS7 : The possibility to restrict Microphone Access to specified applications determined by the user. It works this way: - Let's assume that the user installed the app that uses PJSIP for the first time. - The first time when the app tries to use the microphone of the device (using PJSIP), a dialog appears that asks the user if he wants to give the access to the app for the device's microphone. * If the user gives the access, everything goes well * but if the user doesn't give the access - as I see - the app that uses PJSIP is not notified about it in any way ** and let's assume that a year have been passed after the denial happened : Based on Apple's documentations in this topic : the dialog about the Microphone Access request won't appear again; The user can enable microphone access only if he goes into the device's Settings application, and navigates into Privacy Settings -> Microphone, and enables the access again. Let's assume that he doesn't know this : in this case he just sits there, and doesn't know why isn't the app working : why it isn't it processing his voice. My question about this is : What do you recommend? Where should this problem be handled? On the app side, that uses PJSIP (by checking the microphone's state before trying to use PJSIP), or PJSIP handles this, and provides a callback or something to give information about it (that the access to use the microphone have not been given to the app) to the app? Thanks for your help in advance! Regards, pockany
M
Ming
Fri, Oct 11, 2013 4:22 AM

Hi Pockany,

  1. As in the latest trunk, the iOS 7 support is ready. But of course, based
    on users' feedbacks and suggestions, we may still try to change/improve
    things, but there shouldn't be much modification.

2 & 3. Currently there's no plan to implement/handle those, so they should
be handled in the application level.

Regards,
Ming

On Fri, Oct 4, 2013 at 11:57 PM, Pockány, Pockány pockany@mailbox.huwrote:

Hi!

I just want to ask you about the following 3 topics :

1.: I've seen that you have already started to work on iOS7 support. When
will it be Production Ready?

2.: Do you plan to handle AVAudioSessionMediaServicesWereResetNotification
( link :
https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#//apple_ref/c/data/AVAudioSessionMediaServicesWereResetNotification)?

Maybe it is not required based on the WWDC2013 video 602's (titled :
What’s New in Core Audio for iOS) speaker's comments (you can read his
coments below), but if you think so, please implement it's handling.

If you haven't implemented it's handling yet, and you think that it is
required than my question is : When will it be Production Ready?

Here is the speaker's comments from the video :
"One other bit of a housekeeping here : you can make your application more
roboust if you handle MediaServicesReset "correctly". It's a little bit
hard to test this sometimes... ooops... aaaa... but aaaa.... I find my way
back... ammm.... but... if you implement this your application will
survive... hahahahah....

So... when this happens you will find out that all of your inter-app audio
connections have been broken; the component instances have been invalidated.

So in a host application you should dispose your node audio unit
AURemoteIO and in a node application you should also dispose your
AURemoteIO; So in general it's simplest to dispose your entire audio engine
including those Apple Audio Objects and then start over from scratch as if
your app has just been launched. That's the simplest way to roboustly
handle the MediaServicesBeenReset."

3.: iOS7 introduced a new Privacy Setting in iOS7 : The possibility to
restrict Microphone Access to specified applications determined by the user.

It works this way:

  • Let's assume that the user installed the app that uses PJSIP for the
    first time.
  • The first time when the app tries to use the microphone of the device
    (using PJSIP), a dialog appears that asks the user if he wants to give the
    access to the app for the device's microphone.
  • If the user gives the access, everything goes well
  • but if the user doesn't give the access - as I see - the app that uses
    PJSIP is not notified about it in any way
    ** and let's assume that a year have been passed after the denial happened
    : Based on Apple's documentations in this topic : the dialog about the
    Microphone Access request won't appear again; The user can enable
    microphone access only if he goes into the device's Settings application,
    and navigates into Privacy Settings -> Microphone, and enables the access
    again. Let's assume that he doesn't know this : in this case he just sits
    there, and doesn't know why isn't the app working : why it isn't it
    processing his voice.

My question about this is :

What do you recommend? Where should this problem be handled? On the app
side, that uses PJSIP (by checking the microphone's state before trying to
use PJSIP), or PJSIP handles this, and provides a callback or something to
give information about it (that the access to use the microphone have not
been given to the app) to the app?

Thanks for your help in advance!

Regards,
pockany


Visit our blog: http://blog.pjsip.org

pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org

Hi Pockany, 1. As in the latest trunk, the iOS 7 support is ready. But of course, based on users' feedbacks and suggestions, we may still try to change/improve things, but there shouldn't be much modification. 2 & 3. Currently there's no plan to implement/handle those, so they should be handled in the application level. Regards, Ming On Fri, Oct 4, 2013 at 11:57 PM, Pockány, Pockány <pockany@mailbox.hu>wrote: > Hi! > > I just want to ask you about the following 3 topics : > > > 1.: I've seen that you have already started to work on iOS7 support. When > will it be Production Ready? > > > > 2.: Do you plan to handle AVAudioSessionMediaServicesWereResetNotification > ( link : > https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#//apple_ref/c/data/AVAudioSessionMediaServicesWereResetNotification)? > > Maybe it is not required based on the WWDC2013 video 602's (titled : > What’s New in Core Audio for iOS) speaker's comments (you can read his > coments below), but if you think so, please implement it's handling. > > If you haven't implemented it's handling yet, and you think that it is > required than my question is : When will it be Production Ready? > > Here is the speaker's comments from the video : > "One other bit of a housekeeping here : you can make your application more > roboust if you handle MediaServicesReset "correctly". It's a little bit > hard to test this sometimes... ooops... aaaa... but aaaa.... I find my way > back... ammm.... but... if you implement this your application will > survive... hahahahah.... > > So... when this happens you will find out that all of your inter-app audio > connections have been broken; the component instances have been invalidated. > > So in a host application you should dispose your node audio unit > AURemoteIO and in a node application you should also dispose your > AURemoteIO; So in general it's simplest to dispose your entire audio engine > including those Apple Audio Objects and then start over from scratch as if > your app has just been launched. That's the simplest way to roboustly > handle the MediaServicesBeenReset." > > > > 3.: iOS7 introduced a new Privacy Setting in iOS7 : The possibility to > restrict Microphone Access to specified applications determined by the user. > > It works this way: > - Let's assume that the user installed the app that uses PJSIP for the > first time. > - The first time when the app tries to use the microphone of the device > (using PJSIP), a dialog appears that asks the user if he wants to give the > access to the app for the device's microphone. > * If the user gives the access, everything goes well > * but if the user doesn't give the access - as I see - the app that uses > PJSIP is not notified about it in any way > ** and let's assume that a year have been passed after the denial happened > : Based on Apple's documentations in this topic : the dialog about the > Microphone Access request won't appear again; The user can enable > microphone access only if he goes into the device's Settings application, > and navigates into Privacy Settings -> Microphone, and enables the access > again. Let's assume that he doesn't know this : in this case he just sits > there, and doesn't know why isn't the app working : why it isn't it > processing his voice. > > My question about this is : > > What do you recommend? Where should this problem be handled? On the app > side, that uses PJSIP (by checking the microphone's state before trying to > use PJSIP), or PJSIP handles this, and provides a callback or something to > give information about it (that the access to use the microphone have not > been given to the app) to the app? > > Thanks for your help in advance! > > Regards, > pockany > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > >
SM
Spencer MacDonald
Fri, Oct 11, 2013 10:00 AM

For point 3 the app still receives "silent" audio data so PJSIP wouldn't
know any different, so you should be handling this in the app... I'm not
sure there is an actually API call to find out the privacy status of the
Microphone though.

Spencer

On Fri, Oct 11, 2013 at 5:22 AM, Ming ming@teluu.com wrote:

Hi Pockany,

  1. As in the latest trunk, the iOS 7 support is ready. But of course,
    based on users' feedbacks and suggestions, we may still try to
    change/improve things, but there shouldn't be much modification.

2 & 3. Currently there's no plan to implement/handle those, so they should
be handled in the application level.

Regards,
Ming

On Fri, Oct 4, 2013 at 11:57 PM, Pockány, Pockány pockany@mailbox.huwrote:

Hi!

I just want to ask you about the following 3 topics :

1.: I've seen that you have already started to work on iOS7 support. When
will it be Production Ready?

2.: Do you plan to handle
AVAudioSessionMediaServicesWereResetNotification ( link :
https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#//apple_ref/c/data/AVAudioSessionMediaServicesWereResetNotification)?

Maybe it is not required based on the WWDC2013 video 602's (titled :
What’s New in Core Audio for iOS) speaker's comments (you can read his
coments below), but if you think so, please implement it's handling.

If you haven't implemented it's handling yet, and you think that it is
required than my question is : When will it be Production Ready?

Here is the speaker's comments from the video :
"One other bit of a housekeeping here : you can make your application
more roboust if you handle MediaServicesReset "correctly". It's a little
bit hard to test this sometimes... ooops... aaaa... but aaaa.... I find my
way back... ammm.... but... if you implement this your application will
survive... hahahahah....

So... when this happens you will find out that all of your inter-app
audio connections have been broken; the component instances have been
invalidated.

So in a host application you should dispose your node audio unit
AURemoteIO and in a node application you should also dispose your
AURemoteIO; So in general it's simplest to dispose your entire audio engine
including those Apple Audio Objects and then start over from scratch as if
your app has just been launched. That's the simplest way to roboustly
handle the MediaServicesBeenReset."

3.: iOS7 introduced a new Privacy Setting in iOS7 : The possibility to
restrict Microphone Access to specified applications determined by the user.

It works this way:

  • Let's assume that the user installed the app that uses PJSIP for the
    first time.
  • The first time when the app tries to use the microphone of the device
    (using PJSIP), a dialog appears that asks the user if he wants to give the
    access to the app for the device's microphone.
  • If the user gives the access, everything goes well
  • but if the user doesn't give the access - as I see - the app that uses
    PJSIP is not notified about it in any way
    ** and let's assume that a year have been passed after the denial
    happened : Based on Apple's documentations in this topic : the dialog about
    the Microphone Access request won't appear again; The user can enable
    microphone access only if he goes into the device's Settings application,
    and navigates into Privacy Settings -> Microphone, and enables the access
    again. Let's assume that he doesn't know this : in this case he just sits
    there, and doesn't know why isn't the app working : why it isn't it
    processing his voice.

My question about this is :

What do you recommend? Where should this problem be handled? On the app
side, that uses PJSIP (by checking the microphone's state before trying to
use PJSIP), or PJSIP handles this, and provides a callback or something to
give information about it (that the access to use the microphone have not
been given to the app) to the app?

Thanks for your help in advance!

Regards,
pockany


Visit our blog: http://blog.pjsip.org

pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org

For point 3 the app still receives "silent" audio data so PJSIP wouldn't know any different, so you should be handling this in the app... I'm not sure there is an actually API call to find out the privacy status of the Microphone though. Spencer On Fri, Oct 11, 2013 at 5:22 AM, Ming <ming@teluu.com> wrote: > Hi Pockany, > > 1. As in the latest trunk, the iOS 7 support is ready. But of course, > based on users' feedbacks and suggestions, we may still try to > change/improve things, but there shouldn't be much modification. > > 2 & 3. Currently there's no plan to implement/handle those, so they should > be handled in the application level. > > Regards, > Ming > > > > On Fri, Oct 4, 2013 at 11:57 PM, Pockány, Pockány <pockany@mailbox.hu>wrote: > >> Hi! >> >> I just want to ask you about the following 3 topics : >> >> >> 1.: I've seen that you have already started to work on iOS7 support. When >> will it be Production Ready? >> >> >> >> 2.: Do you plan to handle >> AVAudioSessionMediaServicesWereResetNotification ( link : >> https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#//apple_ref/c/data/AVAudioSessionMediaServicesWereResetNotification)? >> >> Maybe it is not required based on the WWDC2013 video 602's (titled : >> What’s New in Core Audio for iOS) speaker's comments (you can read his >> coments below), but if you think so, please implement it's handling. >> >> If you haven't implemented it's handling yet, and you think that it is >> required than my question is : When will it be Production Ready? >> >> Here is the speaker's comments from the video : >> "One other bit of a housekeeping here : you can make your application >> more roboust if you handle MediaServicesReset "correctly". It's a little >> bit hard to test this sometimes... ooops... aaaa... but aaaa.... I find my >> way back... ammm.... but... if you implement this your application will >> survive... hahahahah.... >> >> So... when this happens you will find out that all of your inter-app >> audio connections have been broken; the component instances have been >> invalidated. >> >> So in a host application you should dispose your node audio unit >> AURemoteIO and in a node application you should also dispose your >> AURemoteIO; So in general it's simplest to dispose your entire audio engine >> including those Apple Audio Objects and then start over from scratch as if >> your app has just been launched. That's the simplest way to roboustly >> handle the MediaServicesBeenReset." >> >> >> >> 3.: iOS7 introduced a new Privacy Setting in iOS7 : The possibility to >> restrict Microphone Access to specified applications determined by the user. >> >> It works this way: >> - Let's assume that the user installed the app that uses PJSIP for the >> first time. >> - The first time when the app tries to use the microphone of the device >> (using PJSIP), a dialog appears that asks the user if he wants to give the >> access to the app for the device's microphone. >> * If the user gives the access, everything goes well >> * but if the user doesn't give the access - as I see - the app that uses >> PJSIP is not notified about it in any way >> ** and let's assume that a year have been passed after the denial >> happened : Based on Apple's documentations in this topic : the dialog about >> the Microphone Access request won't appear again; The user can enable >> microphone access only if he goes into the device's Settings application, >> and navigates into Privacy Settings -> Microphone, and enables the access >> again. Let's assume that he doesn't know this : in this case he just sits >> there, and doesn't know why isn't the app working : why it isn't it >> processing his voice. >> >> My question about this is : >> >> What do you recommend? Where should this problem be handled? On the app >> side, that uses PJSIP (by checking the microphone's state before trying to >> use PJSIP), or PJSIP handles this, and provides a callback or something to >> give information about it (that the access to use the microphone have not >> been given to the app) to the app? >> >> Thanks for your help in advance! >> >> Regards, >> pockany >> >> _______________________________________________ >> Visit our blog: http://blog.pjsip.org >> >> pjsip mailing list >> pjsip@lists.pjsip.org >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > >