iOS any way to debug apple app - ios

For iOS, is there any way to debug an apple app? Just to see what it does behind the scenes? I want to debug the apple music app.
I am asking this because I want to know how is apple able to use the "heart" button lock screen control in iOS 9. I can't seem to find any documentation on this. I understand this is reverse engineering and this may not be allowed.

Reverse engineering is a violation of the iOS SOFTWARE LICENSE AGREEMENT.
(d) You may not, and you agree not to or enable others to, copy (except as expressly permitted by this
License), decompile, reverse engineer, disassemble, attempt to derive the source code of, decrypt,
modify, or create derivative works of the iOS Software or any services provided by the iOS Software or
any part thereof (except as and only to the extent any foregoing restriction is prohibited by applicable
law or by licensing terms governing use of open-source components that may be included with the iOS
Software).
That being said; you can find in this talk by Conrad Kramer, informations on tools for iOS reverse engineering like Charles, cycrypt, IDA and dumdecrypted .
Note that many of those tools are only available for jailbroken devices.
Happy hacking :)

Related

Where can I use Apple's SF Symbols?

I'm developing an app for iOS and Android using Flutter. Currently working on mock-ups, I'm using Apple's SF Symbols.
I was wondering if you could indeed use those icons for my apps but couldn't find the information on the web.
Anyone got the information ?
SF Symbols is a set of over 3,100 symbols that you can use in your app. They’re aligned and configurable in a wide range of weights and scales to adapt to your designs. As they are integrated into the San Francisco system font, they automatically ensure optical vertical alignment with text for all weights and sizes.Please read this guide for More detail
I was wondering if you could indeed use those icons for my apps but couldn't find the information on the web.
From the Xcode/SDKs license agreement:
2.13 System-Provided Images The system-provided images and symbols owned by Apple and documented as such in Apple's Human Interface
Guidelines for iOS, watchOS, iPadOS, tvOS, and/or macOS
(“System-Provided Images”) are licensed to You solely for the purpose
of developing Applications for Apple-branded products that run on the
system for which the image was provided...
Consult with an actual lawyer if you have any question about what that means, but to my un-lawyerly eye, it says that Apple owns the "System-Provided Images" (which must surely include SF Symbols) and that the agreement doesn't cover using them on non-Apple platforms. So you can use them in your iOS app, but not in your Android app unless you secure permission from them in some other way. Be sure to read the license; there are additional restrictions not quoted above that you should know about, e.g. you can't use them in your app's icon, etc.

Google Assistant no longer available for commercial use?

Is Google Assistant seriously no longer available for commercial use? Previously, you were able to but you had to get permission from them. Then at this page and even on their support page I run into this text:
Warning: You can't launch commercial devices that integrate with the Google Assistant SDK. It's available for experimental and non-commercial uses only.
So am I understanding correctly that Google is no longer allowing 3rd party hardware developers to add Google Assistant to their product? If this is indeed true, anyone know why?
Not quite. They're just saying that the Assistant SDK is no longer the route to go to embed the Assistant in your own commercial hardware. Given there are third party platforms that have the Assistant, I assume that they have a different platform that you need to partner with Google to use.
I can only speculate about why this is necessary, however my guesses are some combination of the following:
The Assistant SDK does not provide a way to update itself on devices when necessary, which they would expect on a consumer device.
The Assistant SDK doesn't support all the features that the Assistant now supports. In particular, it doesn't support streaming audio, which is the most popular feature for the Assistant.
Likely at the core of both of these, many of the features of the Assistant are implemented on the client side, while the Assistant SDK implements nearly everything (except wake word) on the server side.

MFi , CoreBluetooth or External Accesory framework?

I am trying to build an iOS app which would communicate with another non-apple device via bluetooth. It would be a  Bluetooth Stereo Transmitter which uses the bluetooth A2DP-profile which is supported by apple :
http://support.apple.com/kb/HT3647?viewlocale=en_US&locale=en_US
I have read tons of articles and pages. I have many unanswered questions and hope to recieve some answers and write something that will help me and others in future work with iOS and bluetooth.
Evaluating the available bluetooth connection options
Here's a list with possible approaches and informations I found. Please feel free to answer/edit anything that is not correct.
Edited from http://www.pocketmagic.net/2012/07/bluetooth-and-ios-use-bluetooth-in-your-iphone-apps/ :
A) Enroll in the made for iPhone/iPod/iPad (MFi) program. Details on costs are not available, but this is not for the small development companies, barely selling a few licenses.indicate costs depending on project, and starting numbers somewhere at 10K USD. Not really an option IMO, as the costs involved and trouble getting certified are ridiculously high, for something so basic and simple such as building a Bluetooth application. I have found a Bluetooth stereo transmitter with bluetooth version 2.1 (Class II). I can not find if the device is MFi compliant.
Based on this article :
Existing bluetooth device and Apple MFI
Q1: How can I be sure or find out if the device is Mfi compliant?
Q2: If the device is Mfi compliant will I be able to pair it with the device in the settings option?
B) CoreBluetooth framework, currently usable only with Low Energy Bluetooth 4 devices. Since these are not largely spread this is not really an option. You won't be able to connect to standard headsets, keyboards, or other non-Bluetooth 4 devices.
Q3: Will I need to pair the non-apple bluetooth device with my iPad (in settings) to use the CoreBluetooth framework?
I am asking beacuse I have no experience with iOS and bluetooth and beacuse my budget is low, so I dont want to waste money buying stuff I will not be able to use for development.
C) GameKit framework, this allows some basic Bluetooth functionality, such as finding nearby devices and establishing a serial communication link, but it only intended for use between iOS devices. So Android plus iPhone via GameKit is a no go.
D) Private APIs. There is a BluetoothManager framework, in the private APIs, inside the SDK. This can be used to achieve the proposed task, but you won't get your App approved on Appstore, as private API's is not allowed by Apple. Since this is so convenient, and working so nice, almost like the real thing Apple didn't want to include.
Q4: Can I use private APIs within the iOS Eneteprise program and distribute my apps since there is no App store approval process?
Q5: Does anyone know some more private APIs I could use beside bluetoothManager framework?
E)Jailbreaking and using Ringwald's BTStack. Jailbreaking = rooting = freedom, probably the best way to go . But this places you so far away from Apple's guidelines, and the Appstore itself. So better decide what your project is all about, and who your users will be.
Q6: For bluetooth I need CoreBluetooth Framework. What framework do I need to import if I want to use wifi communication?
Thanks for any help :).

Is iOS CarPlay API Public? How to Integrate CarPlay?

Is the CarPlay API publicly available?
Where can we find a programming guide or the reference to these classes if it is?
Or will it integrate seamlessly with other APIs like Audio from AVFoundation?
Notes
This question is broad and may be flagged as so but please do not as though there is almost no information on the subject and a lot of people could find it useful at this stage
I live in Switzerland and want to go to Geneva to try out a demo
app that I would write on a Ferrari lol.
Update Oct, 2019:
A couple of years later, Apple opened up their designer guidelines and developer docs on CarPlay. As mentioned in some other comments as well, getting access to developer tools can be done on your mac as well.
Technically, depending on the type of app you want to be compatible with CarPlay, it requires different API's and frameworks. For example:
The CarPlay framework is for use by navigation apps only. If you want to add CarPlay support to your audio app, use MPPlayableContentManager. For messaging apps, use SiriKit’s Messaging-related intents to support reading and sending messages in CarPlay through Siri. For VoIP calling apps, use CallKit with SiriKit’s VoIP Calling-related intents to make and answer audio calls on a CarPlay system.
Legally, however, still the MFi Program requires application and approval by Apple for you to get the appropriate permissions, signing profile etc. in order to deploy it on an actual device. Let alone release it to market. OR... you can try applying for access manually and explain your case.
Lastly, there is also some documentation on how to enable tools and simulator to work with CarPlay. For example, a small excerpt:
CarPlay is supported by default when you run Simulator. However, you should configure the Simulator with extra options when developing a CarPlay navigation app. To enable extra options, enter the following command in Terminal before launching Simulator: defaults write com.apple.iphonesimulator CarPlayExtraOptions -bool YES.
But besides the documentation I can seriously recommend to read what the people at Flitsmeister blogged about on how to enable tooling on your local machine. Also, their road to finally getting approved was apparently tedious and far from smooth (I'm not affiliated with Flitsmeister), even though their use case is based on having lots of users (±1.5mln). Mentioning this to emphasise: CarPlay is apparently still not for the every day developer, just yet.
This question dates of early 2014. Let me update this with a mid 2016 answer:
TL;DR - No, it is not publicly available.
In order to get the tools, documentation, technical specs and even the license itself to develop for (amonst others) Carplay, you need to be enrolled with Apple's MFi Program.
Apple's MFi Program ("Made for iPhone/iPod/iPad") is a licensing program for developers of hardware and software. This is a specific license targeted at manufacturers, mostly of "mass production" units, that has additional benefits over the regular developer accounts for companies. These benefits include hardware components, tools, docs, techsupport and of course the license that you are allowed to develop specifically for these devices and technologies, like Carplay.
The MFi Enrollment FAQ is a decent read that makes everything pretty clear. But before you get your hopes up, do note that -again- it is only available for manufacturers. Like the FAQ states:
Q: Am I eligible to apply for the MFi Manufacturing License if my company does not own a manufacturing facility?
A: No. The MFi Manufacturing License is intended solely for companies that own one or more manufacturing facilities.
There are some exceptions. For example if you're a contractor, or an engineering design firm, that develops MFi accessories for a client (who is a manufacturer).
But basically put, it is not for the average developer and admission is quite strict. This means, in a nutshell, that Apple Carplay is not available to developer for by the, say, 95% of us.
The MusicCarDisplayUI.framework framework is a private framework as of iOS 7.1. Taking a look at the runtime headers of the framework, one can guess why; it's just not ready yet for wide use. Whether Apple will make it public in the future is one's guess.
In the meantime, make sure to open a feature request or directly contact Apple here.
Update: If you wish to have a CarPlay-enabled app, contact Apple using this form.
Just worked on carplay project.
You can find the api documents on apple's developer website.
Like MPPlayableContentManager and MPContentItem.
However only after registered on apple's website for carplay, will apple send you the "Carplay Programming Guide" telling you how to activate the car simulator and what classes to use and how to do things etc.
Take a look at MediaPlayer Framework. There are a bunch of classes in there designed for CarPlay only. For example, MPPlayableContentManager, MPContentItem, etc. Obviously, you won't be able to deploy it via the AppStore without Apple's approval.
Partially since iOS 12.0 : https://developer.apple.com/documentation/carplay
The CarPlay framework is for use by navigation apps only. If you want to add CarPlay support to your audio app, use MPPlayableContentManager. For messaging apps, use SiriKit’s Messaging-related intents to support reading and sending messages in CarPlay through Siri. For VoIP calling apps, use CallKit with SiriKit’s VoIP Calling-related intents to make and answer audio calls on a CarPlay system.

Delphi, FireMonkey: How to find unique hardware id in OSX and iOS

I have a Delphi/Vcl application that is now being ported to FireMonkey for cross platform usage. In the Vcl application the licence security is based on the disk serial number, but I have only code for getting this in Windows. Although I would expect very many Delphi developers to need this kind of code also for OSX and iOS, I have not been able to find any code on internet.
So, what I need is Delphi/FireMonkey code that returns a unique hardware id on any iPad or Mac that can run a FireMonkey application (any Intel Mac as far as I know).
If I should be uanable to find such code, I would be grateful for any other creative code dealing with the license security issue.
There is no way.
Binding a thirdparty app to a specific unique hardware is againnst the fondation rule for user expirience. If a user brought ir app over the app store, then he has the right to install it to all his devices. The number of devices per user is limitedand and is subject to decent protection against abuse.

Resources