My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
iNotifyEx_design_notes  
Updated Dec 15, 2009 by kennytm@gmail.com

iNotifyEx is the successor of GriP that will replace the CFMessagePort-based backend with MIG subsystem for higher performance and robustness.

(The Objective-C based GriP front-end will still be kept.)

As a redesign, iNotifyEx shall have characteristics of following APIs:

  • Growl-like notifications
  • Android-like notifications
  • Some GriP-specific addition
  • Some iNotifyEx-specific addition

Growl-like notification API has the following characteristics:

  • The user has the ultimate decision how the notifications be presented.
  • Tickets (per-app settings) and priority (per-message-group settings).
  • Coalition.
  • Target-action pattern for server reply.
  • How the notification should be shown is abstracted out as a theme.

Android-like notification API has the following characteristics:

  • Actions are sent together with the notification as a PendingIntent.
  • Ticker text.
  • The view is customizable via contentView.

GriP-specific additions are:

  • Suspension behavior, i.e. lock screen mode and game mode.
  • GriP Modal Table View.

iNotifyEx-specific additions currently include:

  • Multiple buttons (actions) in a notification
  • Sub-notification grouping using coalescent ID.

There are some contradictions between the APIs. In particular, the developer-oriented contentView is mutually exclusive with the user-oriented theme capability. However, as setLatestEventInfo seems more common, contentView is a less important feature. As a result, iNotifyEx will send the following in notification packet:

  • Ticket (Growl).
  • Message name (Growl).
  • Title (Growl; Android — 1st line of tickerText and contentTitle)
  • Subtitle (Android — contentText in setLatestEventInfo ).
  • Detail
  • Icon (≥29x29.)
  • Priority (Growl), Sticky (Growl).
  • Coalescent ID (Growl)
  • Confirm action (Android ~ contentIntent)
  • Ignore action (Android ~ deleteIntent)
  • Multi-buttons (as arrays of Button title / Remote action pairs)
  • Super-notification title, subtitle, icon. (meaningful only when Coalescent ID is not null.)

(The super-notification priority and sticky will be taken as the maximum of those of all sub-notifications. Confirming and ignoring a super-notification is equivalent to doing so on all sub-notifications)

Remote Actions

The actions will be executed remotely. These remote actions will be represented as strings in the form

  • module::action arg1 arg2 arg3 ...
If the module:: part is missing, iNotifyEx will assume the module is std. These modules, called Action Providers shall reside in /Library/Application Support/iNotifyEx/Action Providers/module.dylib. The remote action should be implemented as a C function with prototype
  • extern void action(CFArrayRef argv);
Each argument of argv must be a CFString, and the 0th element is that module::action.

Arguments are space separated but parenthesis-balanced. That means

  • foo bar (baz [blah 42] hello) world "abc def"
will be considered having 5 arguments (foo, bar, (baz [blah 42] hello), world, abc def).

Note: argv will be autoreleased after the function ends. Retain it if you want to use it later.

Standard remote actions include:

  • open_url url
  • launch displayID [remoteNotificationUserInfo]
  • darwin_notification notificationName
  • distributed_message centerName messageName [userInfo]
  • notification messageName [userInfo] [objectPointer]
  • sequence action1 action2 action3 ...
  • confirm action confirmTitle [message] [ normal | destructive ]

Theming

http://twitpic.com/ne1vq

Raw Theme API

Currently only 1 function is needed.

  • extern void INXShowNotification(CFBundleRef thisBundle, CFStringRef title, CFStringRef subtitle, CFDataRef detail, CFTypeRef icon, int priority, bool sticky, CFStringRef coal_id, CFStringRef super_title, CFStringRef super_subtitle, CFStringRef super_icon);

Should be a bundle as $INXROOT/Themes/myTheme.theme.

Activation

Depends on libactivator to avoid reinventing the wheel :)

<!--

Simple theme

Theming using only images.

Also a bundle as $INXROOT/Themes/myTheme.theme. But Info.plist should contain the INXSimpleTheme dictionary key.

(INXRect t -> {t.x = ?, t.y = ?, t.w = ?, t.h = ?}. ? can be like 240 or 50%.) (INXFont t -> {t.name = ?, t.size = ?}.) (INXColor t -> "#AABBCC")

(INXLabel t -> {INXRect t.frame; INXFont t.font; INXColor t.color; }) (INXImage t -> {filename t.up; filename t.down; }) (INXStretchableImage t -> {INXImage t; INXPoint t.stretch; INXColor t.color; })

Keys of INXSimpleTheme:

  • bool minimized.enabled;
  • INXRect minimized.frame;
  • INXRect minimized.icon.frame;
  • INXLabel minimized.title.frame;
  • string minimized.transition.style;
  • real minimized.transition.duration;
  • string minimized.normalization.gesture;
  • INXRect content.frame; // x, y ignored here.
  • INXRect content.icon.frame;
  • INXLabel content.title;
  • INXLabel content.subtitle;
  • INXLabel content.timestamp;
  • INXStretchableImage content.background;
  • INXImage content.disclosure.image;
  • INXRect content.disclosure.frame;
  • INXStretchableImage button.background;
  • INXFont button.font;
  • INXColor button.color;
  • INXStretchableImage selection.background;
-->

Comment by elderri...@gmail.com, Oct 28, 2009

cool!! that sounds awesome KennyTM!!

Comment by jklurf...@gmail.com, Oct 28, 2009

sounds good, GRIP is in a desperate need for bug fixes/an upgrade. Hope to see this ASAP.

Comment by fvia...@gmail.com, Oct 29, 2009

When will it be avaiable?

Comment by chris1...@gmail.com, Oct 29, 2009

Yeah when will it be available? Lokking forward to it! i hoe very soon!...Thx kenny, you are a coding poet man!

Comment by anton...@gmail.com, Oct 29, 2009

Ready to beta test it and give plenty of feedback :)

Comment by itz.d...@gmail.com, Oct 29, 2009

this is fantastic! exactly what I (and the iPhone) need!

Comment by ryanmac...@gmail.com, Oct 29, 2009

Can't wait for this, checking back periodically in eager anticipation! Go Kenny!

Comment by todd.pr...@gmail.com, Oct 29, 2009

I'm another beta tester ready as well. Still a Grip user until I have a successor to try.

Comment by anton...@gmail.com, Oct 29, 2009

we should have a wave for this :)

Comment by francisc...@gmail.com, Oct 29, 2009

Count me in too

Comment by anton...@gmail.com, Oct 30, 2009

let´s surf it :)

Comment by baieruli, Oct 30, 2009

Grip (iNotifyEx) and LockInfo? is the main reason I like my Iphone more than any android/nokia/SE/... Thanx for this!

Comment by gdgtlo...@gmail.com, Oct 30, 2009

Grip was a great idea but I had too many safe mode crashes for it to be useful. I hope that this new version will be more stable and useful. We all know the iPhone is seriously lacking in a good notification system.

I just hope that it is released soon.

Comment by Rai...@gmail.com, Oct 31, 2009

i gave GriP a try and it is probably my favorite thing that can be done on a jailbroken iPhone. the iPhones original notification system is a absolute mess and GriP greatly improved upon it! I can't wait to see iNotifyEx will be like.

Glad to see you actively working on this KennyTM!

Comment by ryanmac...@gmail.com, Nov 4, 2009

I know it's pestering, but any update to give us Sir Kenneth? Have designs been translated to code yet...

Comment by anton...@gmail.com, Nov 5, 2009

he updated this page tonight...

Comment by ryanmac...@gmail.com, Nov 6, 2009

Yep..looks like he's been doing some work on the window view :D

Comment by hprid...@gmail.com, Nov 10, 2009

Why all the 'X' boxes all over the design doc? Slide to dismiss is the only way you should go; this is an iPhone after all.

Comment by anton...@gmail.com, Nov 11, 2009

the x boxes are for the growl style notifications...maybe on android style, slide to dismiss is available

Comment by gdgtlo...@gmail.com, Nov 11, 2009

Any idea when we can see a release for this?

Comment by izakj...@gmail.com, Nov 24, 2009

Ooooh I want!!! I love grip and this would just be the pinnacle

Comment by musika%l...@gtempaccount.com, Nov 28, 2009

when are we going to see this on our phones? Im dying for it!

Comment by rel...@gmail.com, Nov 28, 2009

Seeing as he's still updating aspects of the design I wouldn't count on getting a working version of this before Christmas

Comment by elderri...@gmail.com, Nov 30, 2009

yeah it's probably gonna be ready till next year, but it doesn't matter kuz I know it's gonna be worth it!!!!

Looking forward to seeing this app on my iPhone!!

Comment by leeflemi...@gmail.com, Dec 3, 2009

I am liking the look of this. I liked grip but thought it was missing something - this could be it. It's maybe a bit early for requests (or maybe better to design them in early on) but, can you make it so that when an SMS is recieved the app that opens is customisable, so that this can be used with bitesms.

Cheers

Comment by leeflemi...@gmail.com, Dec 6, 2009

Will inotifyex play nicely with music controls (from Phoenix3200 - BigBoss? repo)?

Comment by izakj...@gmail.com, Dec 7, 2009

Yip, the one thing that grip is missing for me, is the "you've got mail" type interface when you receive a new sms. Or even by just clicking sms notification it opens the default message app (not always the apple message app).

Damn my phone needs this!!!!

Comment by leeflemi...@gmail.com, Dec 27, 2009

Will inotifyex be able to control/modify the badge count of any app? The native push system can and as any cydia app can be given any privileges even root, there's no reason it can't. I think it will need to be able to do this. Is there any ETA yet on when it will be available?

Comment by rel...@gmail.com, Jan 1, 2010

@leeflemingster, why would it need to alter the badge count? iNotify will only intercept the display popup, the push notification will still end up telling the relevant application the specific details which means the application will then update the badge number

Comment by leeflemi...@gmail.com, Jan 2, 2010

It would be good if it can alter the badge count like bitesms does, because if I get a text message (or an IM from beejive) if I read a preview of the message there are the 3 possible actions I want to take. 1. Reply immediately. Grip done this by touching the notification 2. Reply later. With Grip you could do this by ignoring the notification and letting it fade (or cancel it with the 'x'). Then the next time you see your springboard you will be reminded about the message you were going send (if you'd forgotten about it) 3. The message does not need a reply. Grip could not handle this case in a way I liked. If you ignore the notification you are left with a badge you do not want and have to open and close the app at some point to clear it. Or you touch the notification and then close the app just to clear the badge. Bitesms does have a mechanism to do this.   

Cheers

Comment by anton...@gmail.com, Feb 2, 2010

No progress :(

Comment by Nick7...@gmail.com, Feb 4, 2010

Anything :D

Comment by a.seha...@gmail.com, Feb 9, 2010

Pooor :-(

Comment by Nick7...@gmail.com, Mar 8, 2010

COME ON ANYTHING?!?


Sign in to add a comment
Powered by Google Project Hosting