Spanish b4i crash error en mi aplicación cuando la subo a Appstore

gregorio_adrian_gimenez

Active Member
Licensed User
Longtime User
Hola a todos!!
Subi una aplicación al appstore, luego de renegar bastante y con la ayuda de EREL, pero tengo un problema, yo la compilo con IOS 12 y no me genera ningun error funciona perfecto, pero evidentemente en IOS 13 si. Se cierra la aplicación cuando llamo a un modulo datos_envio.Show que no tiene nada de complicado
En un punto donde hay una selección en customlistview en el modulo principal, con selecciono una opción, ejecuta la sub show del modulo datos_envio, es en este sub que genera el error, se cierra inmediatamente cuando hago la seleccion.
Acá va el código donde hago la selección

B4X:
Sub Listinternet_ItemClick (Position As Int, Value As Object)
    If Value = "01 Sin conexión" Then
        resultado = "CONEXION"
       
        opcion = Value
       
        Pg.ResignFocus
        Datos_envio.show
   
   
   
    else if Value = "02 Problemas de navegación" Then
   
        resultado = "NAVEGACION"
       
        opcion = Value
        Pg.ResignFocus
        Datos_envio.show
   
    else if Value = "03 Otros motivos" Then
        resultado = "IN_OTROS"
       
        opcion = Value
        Pg.ResignFocus
        Datos_envio.show
   
    End If

End Sub

Este es el codigo del modulo datos envio que es llamado cuando selecciono una opción del customlistview

Datos_envio modulo:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Private pg As Page
   
   
    Dim xui As XUI
   
    Dim audio3 As MediaPlayer
   
    Dim archivo As String
    Public capturado As Boolean

    Private Botfoto As Button
    Private Botenviar As Button

    Private Editobs As TextView
    Private Editsuministro As TextView
   
    'Private Label1 As Label
    Private label6 As Label
    Private CheckBox_suministrook As Label
   
    Private Label_main As Label
    Private Label_reclamo As Label
   
    Private Panel1 As Panel
    Private Label4 As Label
    Private ImageView1 As ImageView
    Private ImageView_imagen As ImageView
    Private Toast As clsToastMsg
    Dim smsc As MessageComposer
    Dim mailc As MailComposer
    Private AnimatedCheckBoxmail As Switch
    Private AnimatedCheckBoxsms As Switch
   
    Dim suministro_validacion As Boolean
   
    Private label_acepta As Label
   
    Private cam As Camera
    Private vv As VideoView
    Private timer1 As Timer
   
    Private TextView_mail As TextView
    Private TextView_sms As TextView
End Sub

Public Sub Show '  ACA ES DONDE SE CIERRA LA APP TEORICAMENTE
    If pg.IsInitialized = False Then
        pg.Initialize("pg")
        pg.RootPanel.LoadLayout("Datos_envio")
        pg.HideBackButton = True
        Main.NavControl.NavigationBarVisible = False
    End If
    Main.NavControl.ShowPage(pg)
   
    Label_main.TextColor = Colors.Black
   
   
'    Label_reclamo.Text = Inicio.opcion
   
    Label_reclamo.TextColor = Colors.Black
   
    CheckBox_suministrook.Visible = False
   
    ImageView_imagen.Color = Colors.Transparent
   
    Botenviar.Enabled =True
   
'    If File.Exists(File.DirTemp, "editsuministro.txt") Then
'        Editsuministro.Text =File.ReadString(File.DirTemp, "editsuministro.txt")
'    End If
   
    If Editsuministro.Text.Length = 6 Then
        CheckBox_suministrook.Visible = True
        CheckBox_suministrook.Visible = True
        Editsuministro.TextColor = Colors.ARGB(255,88,171,54)
    Else
        CheckBox_suministrook.Visible = False
        CheckBox_suministrook.Visible = False
        Editsuministro.TextColor = Colors.ARGB(255,75,69,20)
    End If

    If (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD") Then
   

        Botfoto.Visible = False
        Editobs.Visible=True
   
       
   
        AnimatedCheckBoxsms.Visible = True
        AnimatedCheckBoxsms.Value = True
        AnimatedCheckBoxsms.Enabled = True
        AnimatedCheckBoxmail.Visible = True
        AnimatedCheckBoxmail.Value = False
        AnimatedCheckBoxmail.Enabled = True
        TextView_mail.Visible = True
           
        Botenviar.RequestFocus
       
    Else
   
        If (Inicio.resultado = "TE_OTROS" Or Inicio.resultado = "IN_OTROS") Then
   

            Botfoto.Visible = False
            Editobs.Visible = True
            label_acepta.Visible = True
            Botenviar.RequestFocus
       

            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = True
            AnimatedCheckBoxsms.Enabled = False
            AnimatedCheckBoxmail.Visible = False
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = False
             TextView_mail.Visible = False
             
            Editobs.RequestFocus
       
        Else
   
            Botfoto.Visible = False
            Editobs.Visible = False
       
   
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = True
            AnimatedCheckBoxsms.Enabled = False
            AnimatedCheckBoxmail.Visible = False
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = False
            TextView_mail.Visible = False
           
        End If

    End If

    Panel1.Color = Colors.White
    Editsuministro.TextColor = Colors.Black
   
    Toast.Initialize(pg, 17, True)
   
   
    Botfoto.Enabled = cam.IsSupported  
    vv.Initialize("vv")
    vv.View.Visible = False

    'timer1.Initialize("timer1", 500)
   
   
End Sub


Sub Botfoto_Click
    cam.Initialize("cam",pg)
    'cam.SelectFromSavedPhotos(Sender, cam.TYPE_ALL)
    cam.TakePicture
End Sub

Public Sub ImageToBytes(Image As Bitmap) As Byte()
    Dim out As OutputStream
    out.InitializeToBytesArray(0)
    Image.WriteToStream(out, 100, "JPEG")
    out.Close
    Return out.ToBytesArray
End Sub

Sub cam_Complete (Success As Boolean, Image As Bitmap, VideoPath As String)
    Dim p As Phone
    If Success Then
        If Image.IsInitialized Then
            vv.View.Visible = False
            ImageView_imagen.Bitmap = Image
            p.AddImageToAlbum(Image)
            ImageView_imagen.Visible = True
            Dim b() As Byte = ImageToBytes(Image)
            File.WriteBytes(File.DirTemp, "foto_test.jpeg", b)
            capturado = True
        Else
            vv.View.Visible = True
            vv.LoadVideo(VideoPath, "")
            Log(p.AddVideoToAlbum(VideoPath, ""))
           
        End If
        Else
            capturado = False
    End If
End Sub

Sub Timer1_Tick
    Dim no As NativeObject = vv
    no = no.GetField("player").GetField("naturalSize")
End Sub

Sub Botenviar_Click

   
    If AnimatedCheckBoxsms.Value=True Then
        Botenviar.Enabled= smsc.CanSendText
        If smsc.CanSendText = False Then
        Toast.ShowToastMessage("Su dispositivo no esta preparado para enviar SMS",3000)
        Else
        enviar          
        End If
    Else
   
    If AnimatedCheckBoxmail.Value = True Then
        Botenviar.Enabled= mailc.CanSendMail
        If mailc.CanSendMail = False Then
            Toast.ShowToastMessage("Primero debe configurar una cuenta de mail en su dispositivo",3000)
        Else
        enviar      
        End If
    End If  
    End If
   
End Sub


Sub enviar
   
    If  Editsuministro.Text.Length = 6 Then
       
        CheckBox_suministrook.Visible = True
        File.WriteString(File.DirTemp,"editsuministro.txt",Editsuministro.Text)
    Else
       
        CheckBox_suministrook.Visible = False

        Editsuministro.RequestFocus
       
    End If
   
    suministro_validacion = CheckBox_suministrook.Visible
   
    If (suministro_validacion= True  And AnimatedCheckBoxmail.value = True And ( Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD"))Then
               
        enviar_mail
        'audio3.Initialize2("audio3")
        'audio3.Load(File.DirAssets,"AUD3.mp3")
        'audio3.SetVolume(1,1)
        'audio3.Play
        Botenviar.Enabled = False
        Editobs.Text = ""
        Main.NavControl.ShowPage(pg)
       
           
    Else if (suministro_validacion =True  And AnimatedCheckBoxmail.Value = False And (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD"))Then
           
        enviar_sms
    '    Dim audio3 As MediaPlayer
    '    audio3.Initialize(File.DirAssets,"cepral_confirmar_consulta.mp3","audio3")
    '    audio3.Play
        Botenviar.Enabled = False
        Editobs.Text = ""
        Main.NavControl.ShowPage(pg)
       
           
    Else if (suministro_validacion = False  And AnimatedCheckBoxmail.Value = True And (Inicio.resultado = "ALUMBRADO"  Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD"))Then
        Toast.ShowToastMessage("El código de unidad debe tener 6 dígitos, incluye el dígito verificado,  se encuentra en el margen superior derecho de su factura",3000)
        Editsuministro.RequestFocus
           
    Else if (suministro_validacion = False  And AnimatedCheckBoxmail.Value = False And (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD"))Then
           
        Toast.ShowToastMessage("El código de unidad debe tener 6 dígitos, se encuentra en el margen superior izquierdo de su factura",3000)
        Editsuministro.RequestFocus
           
    Else if (suministro_validacion = True  And AnimatedCheckBoxsms.Value = True And (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD"))Then
       
        enviar_sms
       
   
       
    '    Dim audio3 As MediaPlayer
    '    audio3.Initialize(File.DirAssets,"cepral_confirmar_consulta.mp3","audio3")
    '    audio3.Play
        Botenviar.Enabled = False
        Editobs.Text = ""
        'Activity.Finish
           
    Else if (suministro_validacion = False  And AnimatedCheckBoxsms.Value= True And (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD"))Then
       
        enviar_sms
        'Dim audio3 As MediaPlayer
    '    audio3.Initialize(File.DirAssets,"cepral_confirmar_consulta.mp3","audio3")
    '    audio3.Play
        Botenviar.Enabled = False
        Editobs.Text = ""
        'Activity.Finish
           
    Else if (suministro_validacion = False  And AnimatedCheckBoxmail.Value = False And Inicio.resultado <> "ALUMBRADO" And Inicio.resultado <> "DENUNCIA" And Inicio.resultado <> "SEGURIDAD") Then
           
        Toast.ShowToastMessage("El código de unidad debe tener 6 dígitos, se encuentra en el margen superior izquierdo de su factura",3000)
        Editsuministro.RequestFocus
    Else if (suministro_validacion = True  And AnimatedCheckBoxmail.Value= False And Inicio.resultado <> "ALUMBRADO" And Inicio.resultado <> "DENUNCIA" And Inicio.resultado <> "SEGURIDAD") Then
           
        enviar_sms
    '    Dim audio3 As MediaPlayer
    '    audio3.Initialize(File.DirAssets,"cepral_confirmar_consulta.mp3","audio3")
    '    audio3.Play
        Botenviar.Enabled = False
        Editobs.Text = ""
        Main.NavControl.ShowPage(pg)
       
    End If
   
   
End Sub



Sub AnimatedCheckBoxsms_check_changed
   
End Sub

Sub animatedcheckboxmail_check_changed
   
End Sub

Sub enviar_sms()
   
    Dim PhoneNumber As String = "023909090909090"
    Dim Message As String = Inicio.resultado & " " & Editsuministro.Text & " " & Editobs.Text
    Dim recibido As Boolean = True
    Dim enviado As Boolean = True

    smsc.Initialize("smsc")
    smsc.SetRecipients(Array As String(PhoneNumber))
    smsc.Body = Message
    smsc.Show(pg)
   
   
End Sub

Sub smsc_Complete (Result As Int)
   
    If Result = smsc.RESULT_SENT Then
        Toast.ShowToastMessage("Mensaje enviado", 2000)
    Else
        Toast.ShowToastMessage("El mensaje no pudo enviarse, intente nuevamente", 2000)
    End If
    pg.ResignFocus
    Sleep(3000)
    Inicio.back
   
End Sub
   
Sub enviar_mail ()
   
    Dim mailc As MailComposer
    Dim subject As String = Inicio.resultado &  " " & Editsuministro.Text
    Dim body As String = Editobs.Text
       
    mailc.Initialize("mailc")
    mailc.SetToRecipients(Array("[email protected]"))
    mailc.SetSubject(subject)
    mailc.SetBody(body, True)

    If capturado = True Then
    mailc.AddAttachment(File.DirTemp,"foto_test.jpeg","octet-stream")  
    End If
   
    mailc.Show(pg)
   
End Sub



Sub Mailc_Complete (Result As Int)
    If Result = mailc.RESULT_SENT Then
        Toast.ShowToastMessage("Correo enviado", 3000)
       
    Else
        Toast.ShowToastMessage("El correo no pudo ser enviado, intente nuevamente", 3000)
   
    End If
   
    pg.ResignFocus
    Sleep(3000)
    Inicio.back
   
End Sub

Sub editsuministro_FocusChanged (HasFocus As Boolean)
   
    If Editsuministro.Text.Length = 6 Then
        CheckBox_suministrook.Visible = True
   
       
        File.WriteString(File.DirTemp,"editsuministro.txt",Editsuministro.Text)
       
        If File.Exists(File.DirTemp,"editsuministro.txt") Then
        Else
            Toast.ShowToastMessage("Excelente! el código de unidad quedará grabado en su dispositivo y no tendrá que volver a cargarlo",3000)
        End If
           
        If Inicio.resultado ="SEGURIDAD" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado="ALUMBRADO" Then
               
            CheckBox_suministrook.Visible = False
        Else
           
            CheckBox_suministrook.Visible = False
           
            Editsuministro.RequestFocus
        End If
    End If
       
       
       
End Sub

Sub editobs_FocusChanged (HasFocus As Boolean)
   
    suministro_validacion = CheckBox_suministrook.Visible
    If suministro_validacion = False Then
        If Inicio.resultado ="SEGURIDAD" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado="ALUMBRADO" Then
        Else
            Editsuministro.RequestFocus
        End If
       
    End If
   
End Sub

Sub editobs_TextChanged(Old As String, New As String)
   
    If New.Length >= 159 Then
        Toast.ShowToastMessage("Ha alcanzado el límite de caracteres que puede enviar", 3000)
        Editobs.Text = Old  
           
    End If

End Sub

Sub editsuministro_TextChanged(Old As String, New As String)
   
   
    If New.Length = 6 Then
        Log(Editsuministro.Text.Length)
       
        CheckBox_suministrook.Visible = True
       
        Editsuministro.TextColor = Colors.ARGB(255,88,171,54)
        File.WriteString(File.DirTemp,"editsuministro.txt",Editsuministro.Text)
         Toast.ShowToastMessage("el código de unidad quedará grabado en su dispositivo, si desea modificarlo deberá hacerlo aqui",3000)
     
        If (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD") Then
        Editobs.RequestFocus  
        label_acepta.Visible = True
       
        Else
            Editsuministro.ResignFocus
            Botenviar.RequestFocus
        End If
    Else
   
        If New.Length > 6 Then
            CheckBox_suministrook.Visible = False
            Editsuministro.TextColor = Colors.ARGB(255,75,69,20)
            Toast.ShowToastMessage("El código de unidad tiene 6 dígitos, vuelve a intentarlo",3000)
           
            Editsuministro.Text = ""
            Editsuministro.Text = ""
           
       
        Else
               
        CheckBox_suministrook.Visible = False      
        Editsuministro.TextColor = Colors.ARGB(255,75,69,20)
       
    End If
End If

End Sub




Sub Editobs_EndEdit
   
    Editobs.ResignFocus
   
End Sub

Sub Editobs_Click
   
    Editobs.RequestFocus
    label_acepta.Visible = True
   
   
End Sub

Sub Pg_Click
    pg.ResignFocus
End Sub



Sub AnimatedCheckBoxmail_ValueChanged (Value As Boolean)
   
    If AnimatedCheckBoxmail.Value=True Then
       
        If mailc.CanSendMail = False Then
            Botenviar.Enabled = mailc.CanSendMail
         Toast.ShowToastMessage("Para enviar un mail debe configurar una cuenta en su dispositivo primero", 3000)          
        End If
       
        If (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD") Then
   

            Botfoto.Visible = True
            Editobs.Visible = True
           
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = False
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = True
            AnimatedCheckBoxmail.Value = True
            AnimatedCheckBoxmail.Enabled = True
       
        Else
   
            Botfoto.Visible = False
            Editobs.Visible = False
   
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = False
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = False
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = False
        End If      
    Else
   
        If (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD") Then

            Botfoto.Visible = False
            Editobs.Visible = True
       
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = True
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = True
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = True
        Else
   
            Botfoto.Visible = False
            Editobs.Visible = False
   
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = True
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = False
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = False

        End If
    End If
   
End Sub

Sub AnimatedCheckBoxsms_ValueChanged (Value As Boolean)

    If AnimatedCheckBoxsms.Value=True Then
        Botenviar.Enabled = smsc.CanSendText
       
       
        If (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD") Then
   
            Botfoto.Visible = False
            Editobs.Visible = True
            ImageView_imagen.Visible = False
           
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = True
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = True
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = True
       
        Else
   
            Botfoto.Visible = False
            Editobs.Visible = False
            ImageView_imagen.Visible = False
           
           
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value= True
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = False
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = False
   
        End If

    Else
       
        If (Inicio.resultado = "ALUMBRADO" Or Inicio.resultado = "DENUNCIA" Or Inicio.resultado = "SEGURIDAD") Then
   
            Botfoto.Visible = True
            Editobs.Visible = True
            ImageView_imagen.Visible = True
           
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = False
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = True
            AnimatedCheckBoxmail.Value = True
            AnimatedCheckBoxmail.Enabled = True

        Else
   
            Botfoto.Visible = False
            Editobs.Visible = False
            AnimatedCheckBoxsms.Visible = True
            AnimatedCheckBoxsms.Value = False
            AnimatedCheckBoxsms.Enabled = True
            AnimatedCheckBoxmail.Visible = False
            AnimatedCheckBoxmail.Value = False
            AnimatedCheckBoxmail.Enabled = False
   
        End If
           
    End If


End Sub

Sub label_acepta_Click
   
    Editobs.ResignFocus
    label_acepta.Visible = False
   
End Sub

Si alguien quiere ayudarme en privado puedo enviar el código completo
saludos a todos

Saludos
 

gregorio_adrian_gimenez

Active Member
Licensed User
Longtime User
hola a todos, resolvi el problema
estaba en este codigo
vv.Initialize("vv")
vv.View.Visible = False
que ya no se puede utilizar en IOS 13, yo estaba testeando con IOS 12 y no me generaba el error, al final tuve que comprar otro iphone
y todo resuelto
 
Top