Blackberry BES transport disabled while roaming - blackberry

according to the documentation, using the BES transport mechanism for HTTP connections will work seamlessly while roaming.
However, we have a case where the http requests are not being sent (but email on the device / browsing works fine) while roaming. Error messages include Timeouts and no response from the server (because it doesn't actually get there).
device has correct service books, active BES account, and coverage that is providing voice and data in 3G. works when on home network...
I'm wondering if it is region specific - the test device is on Canadian carrier TELUS roaming in northern Idaho.
Anyone have experience with data requests not making it through while roaming ?
edits:
Target OS 5.0
Device happens to be a 9780
using the following type of connection code:
private HttpConnection getBesConnection( ) throws IOException {
if( CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_MDS) ) {
return getConnection( ";deviceside=false", null );
}
return null;
}
Was really just wondering if anyone had come across this problem in the development of cross-telco-network solutions? thanks

I'm not sure that this is a programming question and may not belong on Stack Overflow. However, most versions of the OS have connection debugging tools that will usually give you information on what is going on. Very difficult to be more specific without knowing what model and OS version we are discussing here.

Related

Unable to establish websocket connection when using Apple devices

I have a web application (hobby project) with a chat function that is implemented with Express.js and socket.io.
Everything works fine on PC and on Android phones, but as soon as you connect with an Apple device, there will be problems since it seems that no websocket connection can be established between the server and the Apple device.
After a bit of googling I found this page:
https://socket.io/docs/v4/troubleshooting-connection-issues/?fbclid=IwAR2XeuehqJkkgFoshFKSVN7sz4UUfWkZ0CPYmsWnqXm-0Q17iVC3dRDyEEI#problem-the-socket-is-stuck-in-http-long-polling
I have limited abilities to troubleshoot on the client side since we do not have a Mac but I followed the troubleshooting that they recommend for the server side. When you connect with an Apple device, it seems that the event "upgrade" is never triggered and you therefore have to settle with HTTP Polling instead of web socket, which does not provide a good user experience.
I have got a certificate from Lets Encrypt and am using HTTPS to access the webpage. I have also tried with several different browsers on the Apple devices.
Anyone have an idea why you can not create a web socket connection with Apple devices and what you could do about it?
Feeling a bit lost and would love some help!

ESP32 iPhone Bluetooth, just a general question

I'm writing some code (C++) for ESP32, to act as a BLE beacon. The problem is this: the iPhone doesn't send out its real MAC address, but does a random-generated MAC address, for security. The thing I'm confused about is how do you know if it's a device you've previously paired with?
So let's say I detect a new BLE MAC address, and looking at the manufacturer data I can determine it's an Apple device (first 2 bytes are "4C").
Now I need to know if I've previously paired with that device, so that I can allow the ESP32 to initiate an action (for simplicity let's just say turn on an LED). If that MAC address is in a list of known devices, then I can continue, and if not, I ignore it.
The problem is, if the iPhone is not giving up the real MAC address, the detected MAC address will never match anything. As this is a security situation I'm sure the algorithm for generating those MAC addresses is not known.
To be clear: this code is being written for the ESP32, not the iPhone.
It is in fact not possible to tell if a device has been previously seen, unless you pair and establish a bond with it. Once you pair with the device, long-term keys are exchanged and are used to quickly re-establish the connection.
This is by design. MAC addresses were originally unique, but this allowed tracking people and devices without their consent. You can read more about this in the following ESP-IDF guides:
GATT security server walkthrough
GATT security client walkthrough
So are you using esp32 as a beacon? This dose not involve any pairing or iOS MAC addresses. iOS will just be able to listen and the esp32 will not even know someone is "listening" to its broadcast.
Probably iOS application can store which services it is interested to hear to; may looks like pairing.. but it is a high level application managed technique and not any related to what BT standard calls pairing.

how to disable wifi assist without user interaction

I have couple of URLs that has to be called(programatically) through wifi not with mobile data.
As WIFI ASSIST is on , whenever the wifi is weak ,packets get transferred through Mobile data.
I would like to stop this from happening.
As far as I have researched, there is no API to toggle wifi assist switch on and off programatically
I can find if the user has mobile data and wifi on with the help of Reachability Class I believe and I can alert the user to keep wifi assist off but this is a very bad user experience.
so I decided to look if its possible to be done with the help of iOS mobile configuration file.
But I couldn't find any keys related with wifi-assist in Apple configuration profile reference.
so I am wondering , is it possible to force wifi to be used for certain URLs.
I remember this is possible with VPN ON DEMAND we can have certain domains to be accessed via VPN.
I am wondering if same is possible for wifi as well through configuration profile
Any suggestions are welcome.
As others have mentioned, there is no way to do manipulate this setting programmatically in iOS. This is not really what you are asking, as you seem to already know the answer to this is "No".
You are asking about the configuration profile, so I am assuming these are managed devices. Unfortunately, there is no configuration profile payload I am aware of that forces the managed devices to disable Wi-Fi Assist.
Your intent, however, is a bit different than what is being asked, I believe. I think you basically have an app that communicates with a resource that is only accessible via the Wi-Fi network (likely a corporate Wi-Fi network). If the app tries to connect to the resource while on cellular, it will not be able to connect. In some cases, when the Wi-Fi signal is weak, the device tries to be helpful and switches to cellular, causing issues with the app. If we could figure out a way to force iOS to not take advantage of Wi-Fi Assist when your app is running, you would be in good shape.
If you can install this app as a managed app, there is a way to identify that the app should only be allowed to run on a Wi-Fi connection. Setting the network usage rules AllowCellularData to false should do this (see this for more details). The thing I am not sure of with this solution, is whether this simply causes the connections to fail when Wi-Fi Assist is on and active, or if it makes iOS prefer to not use Wi-Fi assist when the app is running because it cannot connect over cellular. So I think you can tell an app to only connect over WiFi, but it doesn't really give you a better solution to your user experience problem. The only think it really buys you is that your app connection won't ever try to connect when connected to cellular. There is a chance, however, if you change this value to false for your app bundle ID, it will prevent Wi-Fi Assist from enabling when your app is running. I don't have access to MDM to try it out, but you could test and see.
Ultimately, given that this is probably a corporate device situation, I think you are going to have to address this through user training. The good news is that this is a one-time step. Sure, users may have slight degradation of network performance when Wi-Fi signal is weak but cell signal is strong. This does not matter as much if these are corporate devices where the corporate apps will mostly work only on the company's Wi-Fi network.
Another solution is what you mentioned, basically using on-demand VPN to provide a connection to the internal resources. This is additional infrastructure work, and you already mentioned it, so I'm not sure if it is even an option.
Obviously, the other solution would be to expose the network resources through your firewall, which could allow you to access it over cellular. I'm suspecting this is not possible due to security constraints.
Unfortunately, there are not a lot of good options in this space. However, have hope that there is some way to do it, as Sonos appears to have done something to
allow their app to avoid switching to WiFi Assist while streaming to a local network resource: https://sonos.custhelp.com/app/answers/detail/a_id/4257/~/wi-fi-assist-and-sonos
I wonder if you could have your app open a streaming audio connection to a fixed local network resource, which would cause it to use Wi-Fi. It's a pretty crazy hack, but with a low enough bitrate audio file streaming, it might do what you need while not eating up too much of the network throughput.
Per Apple's notes on Wi-Fi Assist:
Wi-Fi Assist won't automatically switch to cellular if you're data
roaming.
Wi-Fi Assist only works when you have apps running in the
foreground and doesn't activate with background downloading of
content.
Wi-Fi Assist doesn’t activate with some third-party apps
that stream audio or video, or download attachments, like an email
app, as they might use large amounts of data.
Of course the other possible solution that you could consider is improving your Wi-Fi coverage to that the signal doesn't get bad enough for Wi-Fi Assist to be needed. I know this may not be feasible, but wanted to put it out there.
Good luck with this!
There is no public API that allows you to enable/disable "Wi-Fi Assist", and even if you find a way to do it your app will be rejected.
No you can not enable or disable WiFi by programmatically and there is no API for this.

RN42-APL dev board not authenticating when receiving transmit bytes

I recently received the Microchip/Roving Networks RN42-APL development kit from Avnet, and I am able to get the sample iOS app to run and do loopback tests and everything is great (BT connects, authenticates, aware that app is on).
However, when I place this board in a real circuit, where data is flowing to the RX-In pins, the RN42 won't even authenticate!
Has anyone seen a functional example of this MFI chip? The whole 'it just works' isn't really ringing true. Is there something I need to -do- before this chip can send and receive data?
what exactly do you mean that the RN-42-APL BT module doesn't authenticate? I used RN-42-APL + MFi 2.0c chip for iOS authentication and it works well. However the newest firmware 5.43 has still some bug related to authentication with Android system. Previously I used BT module with firmware 5.36. Engineer from Microchip told me, that previous firmware had some bugs related to authentication which requires PIN code.
The newest firmware has been improved, but I found another one bug during my tests.
MFi chip must be connected with 2-wires to BT module. This chip uses I2C data transfer. I designed and constructed real device which was based on these components.
Finally, this module works well with iOS, authentication mode you can change with SA,x command. Please read the manual. There are 4 options: 0, 1, 2 and 4.
So I figured out the issue (I think). It was unrelated to the firmware, but it seems that the device wouldn't authenticate if there was traffic on the UART lines before authentication had happened.
I don't know whether where this limitation comes from, nor do I really care, but if anyone runs into this, I would try shutting off UART traffic until authentication.

Internet accessebility on Blackberry: HttpConnectionFactory and HttpConnection

I have created BB application and I have called webservice in this apps . App is working great in Simulator but when I sign application and install app in device. But through HttpConnectionFactory and HttpConnection have problem to get Internet process has been stop after Homescreen. So how can I get internet of my application? Is there any other way to get internet in device? I search a lot about that but I get that this is known issue for blackberry developer. So please tell me how can I solve this problem ?
Blackberry is a device which can connect to internet in many many ways. Each of them are specified as a service book. Different types of transports that are possible are WAP, Blackberry Enterprise Service, Blackberry Internet Service, (old) Blackberry Unite, Wi-Fi etc. When you create a network connection, you will need to specify what type of connection you are interested in.
A more detailed information is provided in this article - Different ways of connecting to internet

Resources