Does Reachability need to be included when using Twitter/FB sharing sheets? - ios

Does Apple's Reachability class need to be included in an app that allows sharing via the built-in Facebook and Twitter sharing sheets? That's the only area of my app that would require any kind of network call, but since it's a system level function and my app isn't directly talking to Twitter/Facebook, I thought I might not need to include it.
On a related note, if my app sends a user to Safari for a help page, do I need to include Reachability for that? My app wouldn't be making any network calls there, either.

As far as I know, reachability is used to check the availabilty of internet connection. This is usually useful if you want to make sure that the device currently have internet connection before attempting any network-related operation. However, this is not obligatory.

Related

How to detect if user has turned off mobile data for specific iOS App

I've come across a scenario where I need to know if the user has turned off mobile data for the app I'm developing so I can display a warning saying: "You have turned off mobile data, data will be synced when you connect to wifi". I wanted to be clear that I only need the information about my own app, not others the user has installed.
The problem is, i only have a narrow lead on where to start. I've come across a post saying this is possible, but not how. The answer talks about a "telephony class" which will enable some way of accessing the data about the settings for mobile data of your app. I'm guessing this is a native iOS class.
Link to the article on SO can be found here - link to post
My question is, which class, if there even is one in swift, has such an api, that I can get this information?
I'm new in swift and therefore know little of native classes and permissions.
I can provide more information if needed. This was all I could think of.
PS. I'm not looking for the Reachability class where I can detect WWAN / WIFI connection, unless this has some capabilities I'm not aware of.
Kind regards Chris

AppStore: will app relying on network be approved?

I develop a well-looking professionally designed application, which loads events for some clubs at startup (it has more functionality, but all require network connection).
If there's no internet access, app shows "Error: No network access" message with OK button. It exits when user presses this button.
Will it be accepted in App Store? If no, what should I change?
Thanks! :)
This is an opinion question, but my experiences suggest:
It's OK that your app requires network access to provide meaningful content.
Do NOT forcibly terminate (exit) your app in this case, but instead show a helpful message, and keep polling the network status (ie use something like Reachability). If and when the network connectivity comes back, remove the message and proceed.
Bonus points: If you can cache data from when there is a connection, then you can run the app anyway showing the most recent data you have. This is generally preferable as a user experience to simply blocking access to the UI if you can't get to the internet.
Do not exit the application.
If your app work only if network is available, that's okay. But if network is not there, it would be better if you show an empty view with proper message (That for this app, network is needed or something like that. Add some error images or graphics it'll improve the user experience also). Don't forcefully close the app, it can be consider as a crash(Apple will reject your app).

How to fetch the list of near by wifi networks and able to connect to them from our App in ios (Using private API for enterprise App)?

I want to fetch the list of near by wifi networks and able to connect to them from our App in ios, and my Application is Enterprise App so even private api's is also fine. Stuck this issue since 2 weeks, please provide me some references..
What you require will only work on JailBroken devices, the blog(blog.guvenergokce.com/iphone-wireless-scanner-ios5/170) which #Ckouta referred also has one comment from the Blog Admin,
I’m assuming that your device is already jailbroken (otherwise not possible)
You shall create release build of sample app and upload release build in to /Applications folder.
(you can use open ssh for that )
Public API allows you to have only information about the current wifi used by your device using CNCopyCurrentNetworkInfo
In order to fetch all the wifi available in your area, take a look at: Stumbler which is using MobileApple80211. I think, it handles what you are looking for. Moreover, you can also use it to connect your device to a specific wifi. You can find a good example of what you need here (answer #9)
Just keep in mind, if you are using private API, your app will be rejected by Apple.
Although it's late but have a look at this link. You can do what you want with the use of MobileWifi.framework and thanks to Cykey there are some reversed headers to use. I have done what you want myself using the link above:)

How to share links via FB App when I am offline

I am developing an mobile app for iPhone. The app will primary used by people who are on holiday in a different country and will be offline most of the time, due to high costs for internet traffic.
However, the company for which I am developing the app wants to users to be able to use the "Facebook Share" functionality also when people are not connected to the internet.
It should work on a way that they click the SHARE link button in the app, but then get a message that they are offline and the link will get shared as soon as they are online again.
I am trying to figure out how to do this. Can I pass the link I want to share to the official FB App via fb:// protocol (or whatever) and the FB App handles the post/share as soon as it is online again?
Or do I have to do it on my own, put the links I want to share in a internal database and then post them to the wall when I am online again?
Or any other ways??
Any suggestions would be welcome, I would prefer a very quick solution and hope someone maybe has an idea how to do this. I was hoping I can pass the share-link to the official FB App and this one handles everything when it goes online again !?
Thanks for your ideas!
Your approach should be to make your link-sharing code automatically cache requests until they are sent. The app then doesn't need to concern itself with the details - it can just post the link and get a 'failed', 'success', or 'postponed' response from your API and notify the user accordingly.
Your link-sharing code can then internally check if it can currently post to FB and if not (either because the user is currently offline or perhaps the Facebook token is expired) it will store it for later. This class will then re-check periodically (for example when the app comes to the foreground or when the class is initialised the next time the app starts) for connectivity and then it will check if the token is still valid and perform FB login if required. Once it has a valid token it can then iterate through the pending requests and act upon them.
If you really want to make it nice and clean, you can separate out the code that accepts incoming requests to do something, checks if it can be performed now, does it or stores it for later, and periodically checks any requests in the pending queue. This class will not have any idea what the requests do or how they are performed, it will work with another class that implements a protocol to do the actual work and knows about facebook, etc. There may even be an existing design pattern for such a setup, but I don't know what it's called if there is.
Update: I did some research and found this is very similar to the "Fire-and-Forget Pattern".

What is the best way to make my iOS app works when the user has internet ONLY

I am working on an iOS/iphone app where I want users to actually have internet for the app to work.
I have some data fetched from the internet, so the app won't work as expected if the user is not connected.
I have many views, where I want to integrate a solution for this.
I thought of many ways to solve that, but I am not sure if there's a better 1.
Adding check for internet in the app delegate, didfinihlanchingwithoptions.
Issue -> the check will only happens when the user 1st open the application and not when he returns after a call for example, and will only happen on the rootviewcontroller.
Adding the check in viewwillappear of each view.
This works, and I put the checks in a way that the view won't block during trying to connect.
But, what if the view was loaded, and then the user got disconnected.
Should I implement an NSTimer that keeps checking for internet? If yes, won't this be too heavy on the app? If No, what should I do?
Thank you.
following link explains everything what you need to know for checking the internet availability, Reachability is provided by Apple with the sample code, You basically don't have to do much for checking the internet availability, just see the sample code provided by the apple and you will get what you are looking for. here is the link http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

Resources