Internet connection for third party app in blackberry - blackberry

Is there any specific settings for third party app using internet connection because when i try lo login,app need network connection and it ask for APN.
I gave APN as "blackberry.net" as given by vodafone but it gives me "tunnel failure error" or "DNS error"
What settings are required so that third party apps can use internet

This is not a programming question.
If you are trying to use a third party app, and you are not able to (tunnel failure) set the apn in your phone in the following way.
Some third-party applications might require a direct TCP or HTTP connection to the Internet. For example, a stock price application might require a connection to the Internet to retrieve the latest stock prices. The TCP settings might be required for the third-party application to access the Internet.
Note: Contact your wireless service provider to obtain the Access Point Name (APN), user name, and password.
On the Home screen of the BlackBerry smartphone, click Options.
Note: Depending on the theme running on your BlackBerry smartphone, you may need to click Settings, then Options.
Complete one of the following:
For BlackBerry® Device Software version 4.1 or later, click Advanced Options > TCP/IP
For BlackBerry Device Software version 4.0 or earlier, click TCP/IP.
Enter the APN, user name, and password obtained from your wireless service provider.
Press the Menu key and select Save.
This information is from here

Try using "WWW" as access point for Vodafone. if still not proper check out for connection types. or just add ";deviceside=true" at the end of your url.

Related

How reconnect programatically Classic Bluetooh on IOS with MFi and external-accessory framework

I am creating an IOS App to connect into a Bluetooth Device using Classic Bluetooth with Mpi using ExternalAccessory Framework.
Using showBluetoothAccessoryPicker method, I can display an alert with a list of devices that allows the user to select one Device to pair.
I can perform Steps 1 -5 of my use case as below. However I not able to perform step 6
Use case:
The User picks one Device to pair. On that case, I am using showBluetoothAccessoryPicker
The App stores, into a variable, the accessory that the user picked
Turn off the Device
The App shows an alert "Connection dropped"
Turn On the Device
The App needs to reconnect with the Device automatically without needs to select it into a list.
Is there any way or method to pair a device without display a list?
As my company is a member of the Apple MFi licensing program, I asked for Apple support and I received the answer below.
"
In response to your request below, there is presently no support for implementing the bluetooth reconnection process from the device side after an existing connection has been broken. This would be an API enhancement request which you can submit using the Apple Developer feedback assistant web page - https://feedbackassistant.apple.com.
"
"
One option would be for the accessory to handle the reconnection process itself as this is a supported bluetooth option. However, I understand if for power conservation reasons, this is not supported accessory option."
It means, there is no way, yet, to implement it from the App side. if you need that, you need to do it on the Device side.
We can submit feedback for the Apple, using the Apple Developer feedback assistant web page - https://feedbackassistant.apple.com to ask them to create it
you need to make some changes in your firmware to reinitiate the connection when it identifies the connection drop. Or else you can write a method and call on connection drop in your application which keeps looking for device in proximity (with accessory info saved in your app variable) and as and when it finds, it connects using that accessory instance.

Host page locally on iOS

I didn't know it was possible on iOS but lately I went to Japan and one of the free wifi apps wanted to install profile into my iPhone. When I confirmed installation it simply opened Safari with 127.0.0.1. It loaded some page and downloaded profile from there. How do I host some page on iOS?
Creating web server is nothing hard. It is lot of coding of course, but the principle is pretty easy.
There is lot of 3rd party libraries on the github (GCDWebService) just try to search for "ios http server"
To create it manually you need few steps:
1) With the help of CFSocketCreate you open new socket with specific port (standard HTTP 80, or secured one 443 should be forbidden without root access rights) what going to listen on network interface on incomming requests.
2) You need to prepare some receiver what will be triggered as soon as some request income. You can use NSFileHandle class and register NSFileHandleConnectionAcceptedNotification in your notification center. And allow background mode with acceptConnectionInBackgroundAndNotify method. But I recommend to read the manual first
NSFileHandle Apple documentation
3) Process the incoming request. The selector what you register is called and in NSNotification.userInfo property is the incoming request, and you can generate some page here and open it in safari, or in your app or do whatever you want.
4) If you want received some POST data or streams, there is needs to register NSFileHandleDataAvailableNotification what trigger selector as soon as some data to read are available.

Need URL for Appstore connectivity and Xcode developer account connectivity

In my office, proxy and URL restriction is there so am not able to update the app/softwares through Appstore application and also not able to add the Team, signing certificate in Xcode. I raised the complaint to IT admin and inorder to enable the access they are asking for the URL's.. I searched but no luck .. Can you please share if you know the URL details.
Once try below this urls
appldnld.apple.com
mesu.apple.com
These are for updates and downloads of ios so i think that it should be same for mac also for appstore downloads or updates!!
And yes you can analyze network traffic as #
meaning-matters mentioned in his answer!
Reference : How to Stop iOS Software Update Notifications Reminders
Best to run a network traffic analyser on your computer and make a list of attempted accesses.
Even better, do the same from home (or wherever you have access), and list the actual URLs.
Or (in the mean time) ask/urge IT if they can open HTTPS (and HTTP) access *.apple.com/* and *.itunesconnect.com/* and see how far you get.
Good luck, this is a very annoying situation I've in too a few times.

Push Notifications through BES/BIS , BlackBerry

I am trying to use push notifications for OS < 7.X .
I downloaded the sample server / client code. I deployed the client code on my device and the low-level-sample code on the tomcat provided.
For the record , when i registered for push notifications here i registered using the BIS option. Now that i was actually given a blackberry i was informed it is using BES ( i dont think though this is the root of the problem that i am going to describe..).
On the device , in the sample application i put all the correct settings given from the email i received.
Both my pc which is running the tomcat server and my phone are connected to the same wifi.
I am trying from the device browser to connect to the server , eg https://196.84.32.112:8443/low-level-sample
and the browser opens the page normally , meaning that i am able to connect to my server from the mobile.
Now when i hit register from the device sample app ( i have tried both BIS/BES options on the settings ) , i always get the following error :
Request to register failed. Cause by java.io.IOException: Network operation[Subscribe] failed. Make sure that Content Provider URL is accessible.
In the log i get :
Opening URL: my server url appended with info like username/password/model/connection type etc
Content Provider network command [ Subscribe] failed , caused by could not connect to 196.84.32.112:8443
Command "register" failed with error: java.io.IOException: Network operation[Subscribe] failed. Make sure that Content Provider URL is accessible.
A thought is that i should register again for new push keys and use the BIS/BES option instead of only BIS , but here the problem seems to be no connectivity with the local server , not the RIM server. I already tried to register though and i am waiting for the mail with the new settings.
Also i am a bit confused with the BIS / BES option. I have no idea if my users will have BIS or BES enabled so what do i put in my code ?! In the sample application it asks me to select between BIS or BES but when the app is going to production and i need to programmatically make that choice what will i choose?! Or this choice is made only for the evaluation/development of the app and on production there is another server ?
I think all the right things have been said here, but I'm hoping we can consolidate some of the answers, and wrap this question up.
You haven't shared your code, which makes things more difficult, but many people use the RIM/BlackBerry provided PushDemo source, where a connection suffix is hardcoded in /pushdemo/com/rim/samples/device/push/PushUtils.java:
private static String getConnectionSuffix() {
return ";deviceside=false;ConnectionType=mds-public";
}
I'm also guessing this from having read your other question.
By doing this, you've hardcoded the BlackBerry transport type of BIBS. BlackBerry supports many different transports, like BES, BIS, BIBS, or WAP. The BIBS transport will send the request from your device, out to BlackBerry's servers, which are on the internet. (Note: this part is probably confusing to an iOS/Android developer, since those platforms don't provide Apple/Google network intermediaries to relay normal HTTP/S traffic)
Then, the request is relayed to your server, which is at:
196.84.32.112:8443
I'm pretty sure that TCP/IP endpoint is not available from the Internet (I can't reach it). So, that's why it fails for you.
You can take this URL
https://196.84.32.112:8443/low-level-sample
and paste it into your BlackBerry device's browser, and it will work. Your device is configured for BES, which uses your company's internal servers. Those internal servers can reach the 196.84.32.112:8443 endpoint, so it seems to work for you. But, that's because you haven't hardcoded the transport, as you have in the push code that uses getConnectionSuffix(). The device browser is smart enough to figure out a transport that works, and BES works to reach that intranet server.
Hopefully, that explains the confusing part.
Solutions
As others have said, a solution is to get your company's IT people to make IP address 196.84.32.112 and port 8443 accessible through their firewall. That would allow the BlackBerry servers to reach it successfully.
Another solution would be to change the PushUtils.java code to avoid the BIBS transport:
private static String getConnectionSuffix() {
return ";deviceside=false";
}
If you want really flexible code, then I'd suggest rewriting that PushUtils.java code, because it appears to use the pre-5.0 HTTP connection logic. ConnectionFactory in OS 5.0+ makes this easier, and more robust, when supporting multiple transports ...
To answer your question about supporting users with multiple transports, take a look at this blackberry.com example, specifically the MyConnectionFactory class. It allows you to select which transports your app allows, and which it tries first.
Ultimately, the decision to make your server public or not depends on how it's going to be used, and whether you'll have non-corporate internet clients trying to register with your corporate server.
Let me first explain the registration flow for BB Push Demo:
When you click on Register the device will
Inform your web application that the device wants to register. For this it will send the information about the device to your Web Application (the so called ContentProvider). You are expected to store that information in your database. This step happens in the ContentProviderProtocol.performCommand() method of the push demo.
Inform the BB Push Server that the device wants to register for receiving push notifications from your application. This happens in the BpasProtocol.register() method of the push sdk.
Step 1 is only necessary if you want to know who all are registered for push notifications (maybe if you want to send individual push notifications to each device and not broadcast the message to all registered users). In that case, you will probably need other information like that user's preferences etc for customizing the push anyway.
Now the error you are getting is from the step 1. For step 1 to succeed, your device should be able to connect to your web app which it is not able to.
To solve this problem, either you have to make your web app publicly accessible (and be ready to handle the load) or comment out the step 1 from the app by making ContentProviderProtocol.performCommand() return without doing anything.
PS: The webapp used in step 1 need not be same as your push initiator. The webapp is simply being used for tracking who all is registered for receiving the push and should ideally be located in the cloud on a distributed architecture if you expect a lot of users.

Get a meaningful name for a particular iPad in a web app

Is it possible for a web application to obtain a name for the iPad it's being used on?
I don't mean "iPad" vs. "iPhone", I mean "Richie's iPad" or similar.
Imagine a web app where you can log in from multiple devices, with a page that lists the devices you're logged in from: "You are logged in from Richie's iPad".
(On the server side I could look up the network name of the device's IP address, but that's likely not to be very user-friendly, and will fail unless it's on a simple intranet with no proxies, no VPNs etc.)
The only way to get this kind of information as a web app is via Over-the-Air Profile Delivery Enrollment. You can see a good example of this in action at TestFlight.
For details on implementation, check out Apple's very badly explained documentation. I found it easier to reverse-engineer TestFlight then to follow the docs.
The way this works is, user gets a Provisioning Profile install screen (you might have seen this if you installed some custom wifi configuration or any other profiles) that asks them if they want to allow your website to access device's information, and which information specifically. You pick what information you want (device name, type, iOS version, etc.), and if user approves, profile will be installed to their device (Settings -> General -> Profiles ... safe to delete if you only want to access this data once and store it in cookie or html5 database storage) you will get a request back to server with that info.
SSL certificate is not really required for the part you need, but is highly recommended as user will get a big red unverified warning on the profile install prompt page.

Resources