How to create a wireless hotspot from 3G connection in iOS - iphone

If I wanted to, how would I create an app like MyWi, i.e. a wifi tethering app? What are the steps to achieve this functionality? What frameworks/libraries would I need to use?
The goal is not to try to get this app into the app store, but to have it for personal use, and provide it to others.
EDIT:
Nick pointed out the HandyLight app, an app that provided tethering capability disguised as a flashlight. So, it is possible to provide tethering functionality via a third-party app on a non-jailbroken phone. So how is this done?
I have sort of hit a dead end on my research for this :(

If you have access to a developer account (or know someone who does), you can build your own copy of iProxy, an open-source proxy app that handles this. You'll never find it in the App Store, but the source is available on github: https://github.com/tcurdt/iProxy
No jailbreak required, and it works well. Note that I wouldn't recommend using it too often, however, as carriers like to sell their own golden-egg tethering plans, and may ping you for the data usage.

If you release it to the AppStore, Apple will not allow it. That's why there aren't any out there. There was a flashlight app which had the hidden wifi hotspot in it until someone posted a review comment of "WIFI TETHERING!!11!!!!!". Then Apple pulled it.
The iPhone has built in WiFi tethering - they call it "Personal Hotspot", but unless you have an unlocked phone direct from Apple (ie you paid in full with no contract), then you will have to pay your network provider more money to be able to turn it on.

Related

Are BTStack using app approved by Apple?

I am at the beginning steps of using BTStack for Bluetooth connectivity based on RFCOMM protocol (between hardware approved by Apple MFi program & iPhone).
My question is that will Apple approve apps using BTStack? If not, what are the alternatives of BTStack. The main purpose to use BTStack is to implement RFCOMM.
Thanks in advanced.
BTstack-based apps require a JB device and Apple won’t approve such an app (as it won’t run on the 90+% of devices without a JB, motivates JB etc..)
BTstack cannot work inside a regular sandboxed app as it's not possible to access the Bluetooth module.
There is no way to use RFCOMM on an unmodified iOS device. The closest alternative to get RFCOMM like channel is to build your own MfI device (well, that will take time and money, and a new device) and then use the ExternalAccessory framework.
The other option could be to use Bluetooth Low Energy and either simulate serial connection over it (ugly) or use a protocol more suited for attribute/value store with your device.

How does apple approve the app that controls external multimedia player without having it?

I am just wondering how does apple approve the iPhone app that communicates via WiFi network with external multimedia player device that is controlled by this app?
Actually, this app is remote control for multimedia player such as smart tv
How would I submit this to apple?
Does anyone know how to submit app that controls multimedia player to register app store?
Thanks in advance.
Good question. Kind of a gray teritory here.
We have an app in App Store that acts as a dashboard for boat (gathering data from wifi device).
Since it's wifi it doesn't need (nor can it get) MFi approval (as is probably the case with your device).
App passed the approval process. We did have to submit some additional information about the application. The main issue is: all functions of the application have to be visible to the reviewers, even if they don't function without the external device.
How to achieve that depends on you device GUI. You could implement a kind of demo functionality.

Submit iOS app to apple store that interact with third party hardware over wifi

I would like to know what all possibilities are there to submit an iOS app that interact with third party hardware over wifi.
Do I need to go for MiFi certification for the hardware?
I have seen STB (Set Top Bbox) application which does similar things and STB are not Mifi certified
If apple allows such application then Do I need to send my hardware to apple while submitting application?
Regards,
You don't need certification. You only need certification when your device communicates via bluetooth or the 30-pin connector.
Exactly.
No, you don't need to send your hardware. You do, however, need to make sure your code properly handles the case when your hardware isn't available. You should also provide detailed notes to the reviewers explaining what your hardware does etc.
Edit (see comments): In some cases Apple has requested access to hardware in order to review apps.
a far as i know, only bluethooth hardware need to be apple certified, not wifi hardware...

How do you get the charge status of a connected iPhone from the Mac?

In iTunes, you can see the charge status of the iPhone currently connected:
This updates as the phone charges, and even shows when the phone is done charging.
Is there a way I can discover the charge status programmatically from the Mac? Any programming language or API is fine.
I would recommend setting up a bonjour service in an App on the iOS device to communicate with the computer. The app will then communicate the changes in the batter status using the batteryMonitoringEnabled property of UIDevice. Take a look at the samples code here.
BatteryStatus Sample Code
And here is the class reference
UIDevice Class Reference
And finally Bonjour programming
Bonjour programming guide
As far as I know, the only official way to communicate with the iPhone over USB/Bluetooth is by signing up to the "Made for iPhone" program:
http://developer.apple.com/programs/mfi/
Unfortunately the documentation seems to be closed to registered members so I can't find out if the API for this is public or private. You could contact Apple to check before applying.
UPDATE : As mentioned, this might not work for Mac/PC <-> iPhone communication over USB. There are several apps that do things with the phone over USB (although usually for reading/writing files). I'd start by looking at the source code of those:
http://code.google.com/p/iphonedisk
This should put you at least in a position where you have a connection to the device and are able to send/receive commands. Everyone who's ever done this sort of thing has had to spend time reverse engineering the thing :) The jailbreak community might be able to provide some insight too, although having to actually jailbreak the device is probably unacceptable.

Iphone SDK Sending Data using Carrier Data Network?

Could someone suggest a tutorial/sample on how an Iphone application can send data to a remote server using Carrier Data Network only? In other words is there a way an application can programmatically force to enable Carrier Data Network communication, use it to send its request to the remote server and switch it back to user specific communication settings.
I am taking this approach because my application needs to send user's personal info to my server and sending it over public WiFi does not sound right. Please let me know if there is better approach to it....
Thanks
Since no one's writing a full answer ...
I don't know if it's possible to detect CDN vs Wi-Fi, although at some level it must be because the App Store is capable of determining such to prevent large CDN downloads. Of course, the App Store app has access to the private APIs; this functionality may not be exposed publicly. (I don't know if that is the case or not, but be sure you do not use private APIs for your app; the store won't accept it.)
That said, think about the use case of your app, and the marketplace. The iPhone OS and the iPhone App Store are more than just the phones themselves -- they're the iPhone and iPod Touch devices. iPod Touches do not have a CDN; they're Wi-Fi only for connectivity.
As Marc W said in a comment, not all Wi-Fi is public, not all public Wi-Fi is free, and you will likely upset a significant portion of your audience -- people (presumably and hopefully) giving you money.
A better solution would be to use SSL to provide encryption of the private data during transport. This is widely available, works over CDN or Wi-Fi, and provides all the security you should need.
If you look at the Apple Reachability example code, you can test for how you would access a host - however I agree with the other posters that you should consider encrypting your data and let your user's determine how they want to connect to the Internet, and not force one form of connection.
-t