iOS Question libPhoneNumber

fbritop

Active Member
Licensed User
Longtime User
Is there anything similar to the b4a phoneValidator


based on:

a
or any simple way of porting a Java Lib to B4I lib?
Thanks
FBP
 

Erel

B4X founder
Staff member
Licensed User
Longtime User
or any simple way of porting a Java Lib to B4I lib?
There is no way to use Java libraries with iOS.
Solution based on: https://github.com/iziz/libPhoneNumber-iOS

B4X:
#AdditionalLib: libPhoneNumberiOS.framework.swift.3
Sub Process_Globals
    Public App As Application
    Public NavControl As NavigationController
    Private Page1 As Page

End Sub

Private Sub Application_Start (Nav As NavigationController)
    'SetDebugAutoFlushLogs(True) 'Uncomment if program crashes before all logs are printed.
    NavControl = Nav
    Page1.Initialize("Page1")
    Page1.Title = "Page 1"
    Page1.RootPanel.Color = Colors.White
    NavControl.ShowPage(Page1)
    Log(IsNumberValid("6766077123123303", "AT"))
End Sub

Sub IsNumberValid (Number As String, DefaultRegion As String) As Boolean
    Dim nme As NativeObject = Me
    Dim NumberUtil As NativeObject
    NumberUtil = NumberUtil.Initialize("NBPhoneNumberUtil").RunMethod("sharedInstance", Null)
    Dim p As NativeObject = nme.RunMethod("Parse::", Array(Number, DefaultRegion))
    If p.IsInitialized = False Then Return False
    Return NumberUtil.RunMethod("isValidNumber:", Array(p)).AsBoolean
End Sub

Private Sub Page1_Resize(Width As Int, Height As Int)
    
End Sub

Private Sub Application_Background
    
End Sub

#if OBJC
#import <libPhoneNumberiOS/libPhoneNumberiOS.h>
- (NSObject*) Parse:(NSString*)Number :(NSString*)DefaultRegion {
    NSError* e;
    NBPhoneNumber* p = [[NBPhoneNumberUtil sharedInstance] parse:Number defaultRegion:DefaultRegion error:&e];
    if (e != nil) {
        NSLog(@"Error: %@", e);
        return nil;
    }
    else
        return p;
}
#End If

If using a local Mac, the framework is available here: www.b4x.com/b4i/files/libPhoneNumberiOS.framework.zip

Note that it is a swift library so will not work with the simulator.
 
Upvote 0
Top