HomeKit issues when using HMCatalog app - ios

I'm currently working on a mobile app for a HomeKit compliant accessory. I am using the HMCatalog app and the HomeKit Accessory Simulator for testing purposes.
The issue I'm seeing involves my mobile app and the HMCatalog app. I was under the impression that HomeKit syncs through a user's iCloud account. When I am signed in with my iCloud account on one phone (Phone A), any Homes/Rooms/Accessories that I add on in the Catalog on Phone A will show up in my mobile app on Phone A.
However, when I use Phone B, and sign into the same iCloud account, I don't see the same data in Phone B that was in Phone A. The information appearing in HM Catalog appears it is staying on the individual device and not being stored in iCloud.
Has anyone else seen this? Is this an issue with HomeKit? With the Catalog app?

I found that with HomeKit there are some propagation issues. Sometimes it depends on the network you are in (some block _hap services).
Best way to test it is with a local USB dongle and put the accessories in the dongle network. This should limit the propagation issues.
Hope it helps.

I faced the same issue and was pulling my hair on this one. It's an iOS issue, and after a lot of agonizing hours, this worked for me:
Ensure the device has iOS version > 8.1
Log out and log back in iCloud.
See the following thread. It should be fixed in iOS > 8.1 however, may appear intermittently.
https://devforums.apple.com/message/1054540#1054540

Related

Track iOS App’s Mobile data and WiFi usage

I am working on a mini project to track iOS app’s mobile data and WiFi data. I saw some apps doing that through VPN , but I had no luck with NSExtentions.
Any reference is appreciated. I would like to collect device level data which includes all apps . Similar to the stats available in
Settings-> Mobile data
Apart from native iOS client , other apps listed here also achieve this. I know its possible through VPN but i could not find any development documents related to it. Is there any other method apart from VPN?

iOS app with no Bluetooth functionality is showing up under Bluetooth sharing

An app we're working on was originally going to have Bluetooth enabled. After experimenting, we determined Bluetooth was not reliable enough for how we wanted to use it.
The settings in the app project were removed: Bluetooth background modes, and removed and deleted Bluetooth frameworks from the project. Deleted the app from the test device, cleaned and rebuilt. But the app is still showing up under Bluetooth sharing. This is under Settings, then Privacy, then Bluetooth Sharing. Also if the app is opened in Settings, Bluetooth appears as one of the options to "allow App to access".
My experience with the app reviewers is that any kind of inconsistency like this will raise flags during the review process.
Has anyone seen this before and fixed it?

Bluetooth Transmitting Legacy Name

I am working on an mbed powered Bluetooth Low Energy project. I have been developing various GATT services, however, I have now found my project has got "stuck" on a previous service. What ever program I download onto the device, a Service is broadcast with the name "HRM_SEC". I have repeatedly changed the name from this.
I have installed known working examples of default Heart Rate Monitor Example. I have installed blank programs without bluetooth service definition etc.
However, the name of this prior service is persisting.
I have reinstalled my ios app - LightBlue - incase it was a casheing thing. By reinstalled I mean deleted and then downloaded from app store.
I can't connect to these services. New programs are being installed, as I am getting the expected serial feedback.
Why is this happening and What can I do?
I have just tried using the LightBlue app on a different iPhone and I am getting the expected behaviour. How can I purge the stored data from the LightBlue app. I have tried deleting it, then doing a reset (holing lock and home button), then when it has rebooted I re-downloaded the app from the app store. What else can I do to clear which ever info is being stored by LightBlue?
This seems to be an underlying iOS issue, as my other apps are also now using this legacy name. I have tried disabling and then enabling Bluetooth, but this hasn't worked. Any other ideas?
I have submitted an iOS bug report. This is really annoying, as I cannot use my iPhone to test an app I am working on. Any ideas for workarounds?

Is it okay to use my own app from my own device which contains AdMob advertisements

I have implemented an iOS application which has AdMob advertisements in it.
As far as I know if you don't identify your device as a test device during the development phase, Google finds it out and suspends (temporarily or even permanently sometimes) your account.
My app is live on AppStore now. Can I use my own app? Since I used my iPhone as a test device before, I am a little bit worried about it.
Thanks in advance...
Once the app is in production phase and live in the app store, you can use it as any normal user would. However, you should refrain from clicking the ads multiple times as that would lead to click fraud.

Testing iCloud sync with a single iOS device

I have just one iOS device at the moment, and it hasn't been a problem so far. But I now want to add iCloud sync support to my app (which uses Core Data).
Will testing be simply impossible until I get a second device? Or is it possible to use iOS Simulator in conjunction with my device or to fake iCloud data in order to test iCloud sync?
Edit: It doesn't take much research to find that iCloud, especially with Core Data, definitely requires extensive testing and that certainly means testing with more than one device!
In Xcode 5:
OS Simulator now supports iCloud syncing of documents and KVS data
within an app, enabling apps to sync between devices using iCloud.
This feature is useful when testing to ensure that the app documents
and data are syncing properly across multiple devices.
Note: With the app running in the iOS Simulator, sign in to an Apple
ID account using the Settings app. After signing in, use the “Trigger
iCloud sync” command in the Debug menu to tell the simulator to sync
with other devices.
You could use your mac as the second device and take the backend of your iOS core data code and write a test app for the mac. You will have to run the app as a sandboxed app in xcode and put the same sandbox name in the app settings for the apps to see each others data.
To make this work you need to create a mac app up on the provisioning portal (requires a mac developer license 99 bucks - cheaper than an iOS device) and enable it for iCloud.
In general unless you are going to try and manage merge conflicts in your app, you dont need to test iCloud itself. Anything that is in the ubiquity container will in fact be synced. If you need transactional control across devices (same documents being updated on multiple devices at the same time for the same user, you would have to handle conflicts), depending on what your app does it might be an issue.
One way you could test at least a sub-set of your syncing is to install your app on your device, add some data, sync that data to iCloud, then delete the app from the device.
When you install it again and sync to iCloud, you should then get back the same data you previously synced up to iCloud.
It's not exactly real-time, but it should give you something to work with.

Resources