nov 22

Le paysage des nouveaux écrans est d’une vitalité et d’une diversité rares. Les BkLabs ont pour objectif de faciliter la compréhension des nombreuses annonces faites par les différents acteurs du marché : fonctionnalités des systèmes d’exploitations, nouveaux terminaux… Cette analyse se porte tant sur les aspects fonctionnels que les aspects techniques, en les explicitant en termes d’opportunités pour les marques et les utilisateurs.

La première édition de ce dossier étudie les nouveautés apportées par iOS 5, dernière version en date du système d’exploitation d’Apple pour iPhone et iPad.

iOS 5

iOS 5

Avec son nouveau système d’exploitation iOS 5, sorti le 12 octobre, Apple a enrichi le périmètre fonctionnel de son OS, dans le but de proposer une expérience mobile toujours plus riche à ses utilisateurs. Le document « BkLabs : iOS 5 » identifie les opportunités d’évolution des applications existantes, aussi bien pour les marques que pour leurs clients.

Par exemple :

  • iCloud
  • le kiosque
  • le centre de notifications
  • Twitter

Téléchargez gratuitement le BkLabs iOS 5.

La prochaine édition des BkLabs portera sur la nouvelle version (4.0) du système d’exploitation Android de Google.

nov 26

Why statistics matter

To know how often the pages of your app are viewed or which feature is used the most is hugely important. It lets you know how to improve your app, and more importantly what to improve in priority.

Roman Nurik, Android Developer Advocate at Google pointed out this need in this post about « Improving App Quality ».

As he says, statistics can lead you to move some less used functionalities of your app into a sub-menu, or even remove them entirely.

Continue reading »

Tagged with:
sept 29

Object-oriented programming projects almost always start by the design of the business objects model. iPhone and iPad projects aren’t exempt from this rule, but wouldn’t it be nice to significantly speed up the creation of your business objects classes, the parsing code and to lessen the burden of keeping up with simple changes? Enter BkJsonSchema, a complete suite of code generation tools based on JSON Schema (which in turn relies on the industry standard JSON data exchange format).

BkJsonSchema is a Google Code project containing two (2) tools that can generate parsing code for JSON object files (for now it generates Objective C code, but in the future it will generate Java parsing code based on Jackson). Both tools are based around simple extensions to the JSON Schema standard to better describe data types useful in complex parsing code. For instance, we added the mappedType key to specify the mapped class in the destination language.

  • The BkCoreData2JsonSchema Xcode project builds a command line tool that can generate a JSON schema file describing the entities (attributes and relationships) contained in a Core Data managed object model (.xcdatamodel files).
  • jsonschema2objc is Ruby script that can generate Objective C header and implementation files (.h/.m) containing efficient parsing code taking as input an NSDictionary. The NSDictionary is most often created by converting the raw JSON object file using JSON framework parser.
  • A TextMate bundle called BkJsonSchema which adds a handful of keyboard shortcuts that can really speed up the process of editing the JSON mapping schemas.

These tools can be used to generate code compatible with Core Data, as well as code that does not rely on Core Data in any way (simple business objects that are NSObject subclasses). The generated NSObject subclasses are NSCoding and NSCopying compliant as well.

It is not uncommon to mix both modes provided by these tools (Core Data and non-Core Data parsers) in the same application. It is recommended to generate the output in specific directories (one for persistent entities, one for transient objects). To achieve this, you start by designing your Core Data managed object model using the Xcode graphical editor. Make sure to specify the output class name for each entity (by adding a project prefix). You can optionally specify alternate mappings for each attribute. That is especially useful if, for instance, the JSON file provided as input to the parser contains a myFirstName key and you’d like the generated business object to contain a property named firstName instead. The mapping can be specified by adding a remote key to the userInfo of each attribute (in the example you would add an attribute called firstName and add a userInfo key called remote with the value myFirstName). Once you’re done tweaking your Core Data model, run the coredata2jsonschema tool with the –coredata command line option.

Although, coredata2jsonschema spits out the JSON schema on STDOUT, so you can conveniently pipe it into the jsonschema2objc script, it is recommended that you write the output as a separate file. From there, you can generate the parsing code to a specific directory (note that jsonschema2objc will create an original-output directory that is necessary for three-way merging of revisions of your schema).

In the case you want to generate NSObject subclasses, we recommend you install the TextMate bundle and define your schema manually. Run the jsonschema2objc against this other JSON schema file. Again, we recommend redirecting the output to a specific directory you can manage NSObject subclasses separately from the NSManagedObject subclasses (for instance ./transient-model/ and ./persistent-model/).

The project is available under the GNU Public License v3 on Google Code.
http://code.google.com/p/bkjsonschema

Enjoy !

François Proulx

Tagged with:
juin 24

Have you ever wanted to demo your apps on the big screen, just like Steve Jobs does in his famous keynote speeches? Up until recently, this wasn’t possible to do without jailbreaking your iPhone. Starting in iPhone OS 3.2 and iOS 4.0+, a new set of public APIs exposes the dock connector’s ability to interface with big screen TVs and PC monitors. You can either use the composite / component AV cable or the new VGA dongle accessories to connect to an external display.

Continue reading »

Tagged with:
preload preload preload