Cocoa app intercepting http links - macos

Is it possible for a Cocoa app to handle http://somedomain.com links, but ignore other domains? If my app is running, I want it to handle links to http://somedomain.com only.

Related

How to communicate between UI app and an Helper App

I have a main application. Now I need to add upload capability. I thought of using a helper app which runs in dock so that even if the main app is closed it continues to upload. Now my problem is that I need to feed the file paths to the helper app so that it can start uploading.
How can I send message to the helper app from the main app ?
You could use Unix Domain Sockets, or perhaps Distributed Notifications, if you want a Cocoa specific framework.

How to grab selected HTML from browser and pull into my app

I'd like to create a Cocoa app that is able to grab selected text from a website in a third-party browser (in other words, NOT from an embedded webkit instance running within my own app) and then store it in my app's database. From what I can tell, I need to user some kind of service for this, like how selected text in Textedit can be turned into a new sticky note via a service. However, I'd like to be able to provide this app through the App Store. Does that mean I need to use XPC services?
That's as far as I have gotten. So if I do need to use XPC services, can someone point me in a helpful direction? The Services Implementation Guide is totally over my head.

How to handle HTML5 Web Notifications with a Cocoa WebView?

I use a Cocoa WebView to display a website which sends HTML5 Web Notifications. When browsing this page using Safari, I receive User Notifications directly in the Notification Center of Mac OS X Mountain Lion.
How I can achieve the same behavior by implementing my own WebView ? I didn't see any delegate methods related to this feature.
Edit: If this can help someone:
https://github.com/jnordberg/irccloudapp/blob/master/NotificationProvider.m
Thanks to Johan Nordberg for sharing this.
There is no public API for web notifications in WebKit on OS X at this time. You should file an enhancement request with Apple requesting that the functionality be exposed. However, since WebKit is open source you can easily find the private interface on WebView that relates to displaying web notifications. As with all private interfaces, it's subject to change without notice and may not be used within an application in the App Store.

Session state persistence between web page content and XmlHttpRequest for Mac dashboard widgets and Safari extensions

I already posted to Apple's Safari dev forum but got no responses so thought try cross posting elsewhere to get ideas:
I'm asking this question in regards to both
Safari Extension (toolbar type AJAX extension)
Mac OS X dashboard widget
I assume both will be similar as they use the WebKit rendering engine?
I would like to know if the engine for maintaining built in session state support (cookies?) shares and persists the session between web content loaded on the page by the browser engine (HTML, JS, CSS, images, etc.) and requests made by XmlHttpRequest object.
I'm porting an AJAX app that requires session state that's shared between web content and XmlHttpRequest object. (i.e. no explicit cookie management for session state, at least not defined by the web service API that I use).
I successfully ported the app to Chrome, Opera, Windows 7/Vista gadget. It failed to work on iGoogle, and Mac OS X widget. Safari extension port had mixed results - it works in some cases but not in others.
I also did a Microsoft .HTA port (HTA app = web app to be run via IE w/o security restrictions of normal web apps, like cross domain XmlHttpRequests) and noticed that works only with IE7+ (due to implementation differences of native XmlHttpRequest in IE7+ vs MS XML version of earlier IEs)
I had consulted discussion/support group for iGoogle as well and learned that iGoogle too doesn't support such session state support.
I kind of worked around iGoogle issue by using Flash component to perform XmlHttpRequests which seemed to be able to share the overall browser session and thus work. I'm attempting that for Mac widget, it didn't seem to work. Can Safari toolbar extensions make use of Flash?
In any case posting this thread for more insight like if Safari/Mac is like iGoogle and not support a shared session between web content and XmlHttpRequest (or no cookies even supported).
FYI, the app I'm working on is below, you can try out what I have to investigate issue. When session state support fails, you get error message that need to enter code correctly (that's what the web service returns in this case, not very helpful to the user).
http://code.google.com/p/autosmsclients/
I've already hosted code for Mac OS X widget and Safari extension there.

Access to SMS and browser content tombstoning

WP7 newbie here..
In my application, I am using embedded web browser control to load an external web page.
I have a PIN based validation step in that application, which involves
1) User Leaving the current application, (which has a external web page loaded in the embedded web browser) to launch the SMS Inbox.
2) User reads the SMS he just received, which has the PIN. I am sending this SMS to the user.
3) The User then needs to resume back to the original application by hitting back button, to enter the PIN which he received in the SMS earlier.
Once user enters Step2, my application will go into background, and subsequently will get tombstoned. Once user enter Step3, I want to restore application state (with the embedded web browser control), without making a fresh HTTP request again to load the web page.
So, with the given scenario in my mind, I have following two questions -
1) Is there a better way to do all this, like not having to exit the original application, and still let user read the SMS. ( i.e any api to read sms ?)
2) Is there a way to serialize the browser state/save entire web page (with images, css, js) , such that entire web page can be rendered exactly the way it was, when user left the running application.
Important points:
1) I can only use SMS as a communication channel. I can not use something like raw push notification channel, which could let me show PIN to the user, without exiting the application.
2) I am targeting Windows phone 7.0 runtime, but if there is a better option available in Windows Mango update, please do tell me.
Any sort of help is greatly appreciated.
Update:
Added link to the embedded web browser component.
1) There is no API that would let you access the contents of the Messaging hub from inside your application. This is set up for privacy purposes.
2) By default, the web browser saves its state. So if you navigate away from your app, and then come back - the same web page will still be there unless you explicitly re-navigate on activation
1) The better way to do this would be to not embed the web page within an app. Just build a mobile website. If all the functionality is within the web page you gain nothing but problems by trying to put it inside an app.
The web browser control is not intended to be used to create an alternative browser (which is really what you're doing).
2) You can try using the SaveToString() method to store the state of the page when tombstoned but this doesn't allow for modifications to the page since it was loaded (including anything dynamically updated or any state in javascript). If you have multiple pages you'll also need to maintain the internal backstack and the state of each page separately.
Short answer: If you want to put your application logic in a webBrowser control then you can't support tombstoning. Fast-App-Switching (in Mango) partially addresses this but not completely.

Resources