Sphero: openConnectionWithSpecificRobot or analog in official SDK for iOS - ios

I don't understand how I can start communication session with specific robot or with all connected (available) robots. I have "availableRobots"=2 and array with both robots. What next? In official SDK for iOS I don't see any method similar to "openConnectionWithSpecificRobot".

Currently the iOS SDK only supports communication with one robot. Prior to iOS 6 Apple only allowed communication with one device of any type. This was supposedly fixed in an iOS 6 update, although we have not had the chance to test this yet. If so we hope to release an update at some point in the future that will support communication with multiple robots on iOS.

Related

Which minimum iOS version should my app support if creating BLE app?

I am about to start new application and my customer want to support iOS 5 and iPhone 5 also including all latest range devices. I am using swift and official apple doc saying it supports till iOS 7. My app will going to work based on BLE and location update data and basically its a IOT application.Issue is should i start giving support from iOS 7 or 5 or from 9? I do not have any exact clue why I should not choose iOS 7 version and I should start iOS 9.
You can start by checking the device capability table here:
https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html
As it states there, the first device compatible with Bluetooth Low Energy is iPhone 4s.
With that in mind you could possibly support the first iOS version which supports iPhone 4s, from here it is iOS 5. As others mentioned Core Bluetooth was introduced a bit later.
Now you should understand that supporting all versions starting from such an old OS version will introduce A LOT of work. Then you have 2 questions which we cannot answer:
Do you want to do that work?
Is your customer willing to pay for it?
As for link for your customer I guess you could use this:
https://mixpanel.com/trends/#report/ios_10
I would say that Mixpanel is quite a big company which tracks iOS distribution numbers pretty precise.
The facetious reply - nonetheless a valid one - is to find another client.
A more rational reply is to speak reasonably to your client with confidence and knowledge of history.
1 iOS underwent a major UI change with iOS 7, what's to be gained by supporting something older?
2 If the device in question is actually running iOS 5 today it probably cannot use iOS 8 or above.
3 As you said, Swift will not run on a device unless it's iOS 7 and above.
4 The historical adoption rate for the next version of iOS - since I believe the start of history in 2007 - is well above 80% in the first year and 90% the year after.
Combining these things, you have several arguments for this client. (And yes, this question and/or answer likely belongs in the freelancing site.)
1 Why the need for iOS 5?
Give them the current numbers of how many devices currently still run iOS 5. Have them defend this reason, or else find another client.
2 If the client is "closed", meaning they aren't looking to market your code, then why are they using devices running iOS 5?
Again, the only reason to use that old a version - understanding that a device running iOS 5 is old enough yet likely new enough to at least run iOS 7 - is that they are cash-strapped. Frankly, that's a client I'd run from. Quick.
3 There's two likely reason for this request. (a) They are testing you to see how you reply. (b) They are not as informed as you about the current state of the iOS market.
Let's take the the latter one first. Be informed and knowledgable and stick with the facts. Use the arguments I lined out above. If they aren't convinced - you probably need to drop them as a client. While the "customer rules", nobody wants a client you cannot reason with.
As for the former - the client is testing you?
Again, give them the facts - you can support iOS5, but with limitations - later versions of iOS may not run those devices, later features introduced in iOS (particularly UI things like auto layout, UICollectionViews, etc.) mean extreme complications in the code base... adding both time and money, and it needs to be written in Objective-C.
iOS 5?! Right now iOS 9 has 92% of active devices so you should definitely choose it or even iOS 10.
For BLE as you mentioned iOS 7 and iPhone 4S is minimum.
You can see from the Documentation that Core Bluetooth was introduced in iOS 5, so you can target that version and still have BLE support but only in Objective-C
However, there will be a number of other enhancements in iOS that you will not be able to take advantage of and this will make development more difficult Andre therefore more expensive.
iOS 5 is very old and probably represents a very small percentage of devices.

How to implement Mobile Device Management in iOS 7?

I have gone through a lot of documentation related to Mobile Device Management in iOS but still I have a lot of confusion about it.As per the apple they have made a significant change in device management in iOS 7 but still most of the blogs written about it are old and absolute.Can somebody please give me a brief explanation of how I should go step by step in iOS 7.Also I want to know if I don't have any MDM server initially then how can I test my code.Is Maverics local server sufficient enough to handle this or we can't process without an MDM server.If it is then please suggest me how should I go.
References:
iOS: Mobile Device Management
Mobile Device Management with iPhone
iPhone Mobile Device Management
There was NO significant changes between iOS 6 and iOS 7 in MDM protocol. Yes, Apple added additional features, configuration profiles and so on. And usually, they call these things "groundbreaking/revolutionary changes" :)
Actually, the protocol stayed the same (with very minor changes) from version iOS 4.0 to iOS 8.0. I would say the bigest changes were around creation of APNS certificate.
So, you can take any open source implementation of MDM and use it for iOS 7:
Profile manager (included in OS X Server). it's in some mix of ruby + binary
WSO2
iMAS
P.S. I would recommend to ask more specific questions. As example, I started to implement MDM server and stuck on item X. I tried Y,Z and it didn't work. How to solve this problem?

How to find wifi/cellular signal strength in ios [duplicate]

As far as I know it's not possible to scan for hotspots in range and read their bssid and signal strengths. This was possible on iOS 4 by using private APIs and not longer possible on iOS 5 without jailbreak. Even if it were possible, the app would be rejected on the App Store. Is that right?
One company that has an indoor positioning system is claiming they can develop this system in iOS. I know for a fact they are scanning for hotspots and signal strengths and then triangulating the signal on their current Android app.
Are there any alternatives I am missing? Their claiming sounds impossible to me but I would love to hear from the people here. I would like to be ready when they demo (although I am expecting a jailbreak or some kind of mock up)
As far as i know this can still be done (using private APIs, of course) by MobileApple80211 framework.
Stumbler code is a good source of information on how to use this framework.
For iOS 5 you'll need a jailbroken iPhone. Guvener Gokce has a very educational blog post on this: iPhone Wireless Scanner iOS5
Just to update the answer: The MobileApple80211 framework has been replaced by MobileWifi.framework. You will need a jailbroken device (supposedly it can't be done using just private API's, hence on a development/enterprise non-jailbroken device).

Is there a way to access Bluetooth 4.0 Low Energy devices in iOS?

The new iPhone 4S has support for Bluetooth 4.0 Low Energy devices. Is there an API for communicating with these devices in iOS?
It is part of the iOS 5.0 SDK. You can download the SDK and check it out.
As someone has mentioned, the APIs are available in the iOS 5.0 SDK. However, bear in mind that those APIs only provide support for ATT client, if you want to add services and act as a server you're out of luck for now. I truly hope Apple will add server support at some point, since some profiles (Alert Notification or Proximity) would benefit enormously: being able to be notified when you receive a new SMS/email or being able to "ping" your phone to find it would be great.
TI has a nice development package that includes a BLE peripheral, programmer, sample code, and sample iOS App. This is a great place to start and shows off most aspects of the Core Bluetooth API in iOS
http://processors.wiki.ti.com/index.php/Category:BluetoothLE

Scanning and switching Wifi networks on iOS 4.0 and above

I am trying to find whether the private APIs listed at: http://code.google.com/p/iphone-wireless/wiki/Apple80211Functions still work with iOS 4.0 and above. I am trying to turn the wifi ON, scan the networks available and latch on to one of the networks. I am not going to put the application in appStore and it is just an experiment. I found many applications pulled down from the appStore but they seem to have been developed on iOS versions less than 3.0. I would also like to get an example if possible.
Please Help.
I needed the same thing as you, and after some research I must say that starting from iOS 5 it is possible to scan the network list using private API on a jailbroken device only. This blog post states the following:
Last year Apple has blocked wifi scanners from App Store, however till iOS5 it was still available for private usage via WiFiManager bundle.
In iOS5, WifiManager bundle no more exists however 80211 functions are still available via IPConfiguration bundle.
The API you linked provides an open-source tool Stumbler which seems like something you were seeking. The tool is claimed to work under iOS 5.
Tried stumbler for iOS5 via linking to framework
/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration
I could link to Apple80211Open, Apple80211BindToInterface, Apple80211Scan. However, I only receive empty WiFi scan results on jailbroken iPhone4S / iOS 5.1.1
The folks from WifiFofum did a good job and have a app on cydia which runs on JB iOS 5.1.1 and does an excellent job for scanning WiFi networks (BSSID, link level, SSID, channels, ...).

Resources