Create an OS X today widget without a host app - macos

Is it possible to create an OS X Yosemite Today Widget without a host app, like the builtin Weather, Stocks and World Clock apps?

You can not do that simply because your executable is still running in the companion app rather in the extension. It means that codes are actually belonged to the companion app. So, you must have your companion app.
Info from the official documentation:
An app extension is different from an app. Although you must use an
app to contain and deliver your extensions, each extension is a
separate binary that runs independent of the app used to deliver it.

Related

OS X Background Fetch Equivalent

I'm familiar with the Background Fetch in UIKit but I was wondering if there is an equivalent for OS X apps.
My application is bundled with a Safari App Extension that needs to update frequently. Auto update does not look like it's supported from what I've read in the forums on the App Extensions since it's bundled to the OS X app. I have a shared data storage between the app and the extension so my ideal solution would be having the app run (in the background wether the user has it open or not) periodically check for the latest version. Then when the user is actually engaging with my extension it will notify the user of the update. This is why a solution like Sparkle is not desired.
I have everything down, but I'm lost on running the background process. Appreciate any help or creative solutions!

In-house OS X app updater - handling of "signature folder"?

I am in the process of adapting our custom (auto-)updater to work with OS X apps. (These OS X apps will be distributed outside of the Mac App Store.)
After the new bundle is downloaded, I am selectively overwriting certain files. However, it is unclear to me whether there is a situation where I should also overwrite the _CodeSignature folder in the "old" app with the newer one.
As (currently) the Gatekeeper checks a downloaded app only the first time it is run, the above becomes a non-issue (again: for the time being).

Distributing Mac App via Mac App Store and Own Website

I want to distribute my Mac App on both Mac App Store and my own website. The Mac App Store app will be signed via the Mac App Distribution certificate from Apple and the Website version will be signed via the Developer ID Application certificate. The website version will be distributed as a simple MyAppName.zip file that lets the user unpack MyAppName.app to where ever the user wishes. My app is a document based app that creates documents with extension .mydoc
I have two options to implement such a scenario.
First, and my preferred method is to have same bundle identifier for both apps. If a user tries to install from MAS first and then website; Will both apps live on my Mac without any issues? If a user installs the website version first, and then tries to install from MAS, how will MAS behave? How is it decided that which app will open my document by default?
Second, I use different bundle identifier for the apps on MAS and my website. Essentially they are different apps and I don't like this because it is confusing for a user because the apps look and behave exactly the same. In this case, how is it decided which one of the apps will open my document by default?
If a user tries to install from MAS first and then website; Will both apps live on my Mac without any issues? Answer: YES
If a user installs the website version first, and then tries to install from MAS, how will MAS behave? Answer: MAS will ask user that there already exists a version and if it should be kept.
How is it decided that which app will open my document by default? Answer:
Launch Services documentation says the the behavior is not determinate. So either one will open.
Second, I use different bundle identifier for the apps on MAS and my website. Essentially they are different apps and I don't like this because it is confusing for a user because the apps look and behave exactly the same. In this case, how is it decided which one of the apps will open my document by default? Answer:
Launch Services documentation says the the behavior is not determinate. So either one will open.

OSX Sandbox: Launch a different executable based on OS version

I have an application in the Mac App Store. I'm trying to support users going back to Snow Leopard but this is becoming increasingly difficult.
Recently I've hit a roadblock due to the iTunesLibrary.framework, this framework must be linked to the main executable and yet doing so will always trigger a crash on load when running in Snow Leopard.
To workaround this problem, I want to compile a version of my app that doesn't use features and frameworks from newer versions of OSX. The problem is, how can I launch the compatibility build automatically?
I'm considering trying to make the main executable point to a shell script, but I don't really like that idea. I've also thought of the main executable being a helper that simply launches the full app and then exits. I expect this would work, but I worry about it getting approved by Apple. Finally, I'm wondering if the app bundle format itself can support this kind of setup, maybe via an advanced used of CFBundleExecutable that I'm unaware of.
Has anyone been down this road, what would you suggest?
Try weak linking the frameworks, more information about Weak Linking and Apple Frameworks here. Then also check in your code for the OS version or - (BOOL)respondsToSelector:(SEL)aSelector of any NSObject to determine what you can call and what not.
To have Snow Leopard as Base SDK you'll need an old Xcode and will have troubles submitting to Mac App Store.

Mail.app plugins & Mac App Store

Does anyone know if the Mac App Store is allowing third party plugins for the Mail.app? With the new release of Mountain Lion, the security architecture will sandbox every signed application (and thus Mail) so that the process of installing a plugin is very limited.
The question is: since a plugin must use a private API (Mail.app doesn't expose APIs) and access private data from another application, how can this be accomplished within Mac App Store rules? Is it possible at all?
You never could publish plugins through the Mac App Store. The rules only allow for self-contained apps. You also couldn't sell an app that does nothing more than installing your plugin - the rules forbid apps to install any code in shared locations. And with the sandbox it's not possible either.
Your application would need to be usable without the plugin present. MsgFiler offers a good example: it works, albeit slowly, by itself, and offers a plugin downloadable separately from the App Store which speeds it up.

Resources