Associate App with Messages Extension - ios-app-extension

I created a Messages Extension in Xcode 8 using the appropriate template, that seems to be working fine and when I run the extension, it's installed in the Messages app and I can use it without any issues.
My problem is that I wanted to create an actual app to be associated with this extension (so that the user would be able to search the extension through the Messages Store or install the actual app through the App Store). I gave it a matching bundle identifier (my extension is com.XXX.testmessage.MessagesExtension, so for the app I set com.XXX.testmessage), but when I run the app, it doesn't install the extension.
Is it possible to do that? And if so, what am I missing?

In XCode8, open your existing app. Then you need to add a new target to your app (File->New->Target->iOS->Sticker Pack Extension (or an iMessage Extension if you want a custom messages experience)). It will then create a folder visible in Project Navigator. The name of the folder depends on the name you gave to the extension. In that folder you will find a Stickers.xcassets where you can drop your stickers.

Related

Add a file to UWP Sideload Publishing Folder During Publish Process

I have a UWP app I'm publishing via sideload (it will never be in the MS Store) and I have a PowerShell script that checks for an existing install of the app and whether it has un-synced data. I need this script to be included in the folder the Publish process creates, or better yet can I somehow customize Install.ps1 beforehand? I can't do it after publishing as that isn't an option due to the processes in place at work. Otherwise I'd just drag/drop via Explorer of course.
The UWP app will be installed via running this script (if it doesn't find un-synced data) rather than using the .msixbundle directly.
Need the Publish process from VS to add my custom PS script here:
I tried adding the file to the UWP project in the Solution and setting the Build Action property to Content or the Copy to Output Directory to Always, but as expected these weren't relevant to publishing a "sideload" UWP and had no effect.

install4j how to create custom installer for macOS single bundle archive

To create installer for macOS (i4j 9.0.2) I used option "Installer-macOS single bundle". But it is deprecated now. As advised I use "Archive-macOS single bundle archive" instead. I want to have same installation dialogs as before. So, I selected "Use setup application" and had to create custom installer application in section "Installer". I created new application same as default "Installer" - manually added there all screens and actions with the same values as in "Installer".
Is this correct?
Anyway installation dialogs on Mac run without icons and images. Also installation wizard default location is not "Applications". What is wrong?
I created new application same as default "Installer" - manually added there all
screens and actions with the same values as in "Installer". Is this correct?
You can put all the screens that you want to use in the macOS setup application into a screen group and then add a link to that screen group in the setup application. In that way you do not have to duplicate them.
Anyway installation dialogs on Mac run without icons and images
I do not see that behavior here. Please contact support#ej-technologies.com with a download link to a media file that exhibits this behavior together with the .install4j project file.
Also installation wizard default location is not "Applications".
The media file type is an archive, it does not have an installation directory, but the user drags the application bundle to the desired location. This is the default installation procedure on macOS. You can style the DMG so that it shows a symbolic link to /Applications as a target in the window. This makes it easier for the user. For more information on that topic, see
https://www.ej-technologies.com/resources/install4j/help/doc/concepts/dmgStyling.html

How to red an external file during the installation of an .appxbundle

I want to distribute my UWP app using side-loading.
I have created the .appxbundle using Visual Studio, and also EV code-signed it.
So, when the user clicks on the .appxbundle file, my app is properly installed and the user can start working with it!
In this way, I can place such .appxbundle on my website, and the users can download and install it. Marvelous.
Now, I would like to customize each download, by adding a file with some tracking information to attribute a download e.g. to a specific ad campaign that I am running.
So my server can generate a ZIP file containing the .appxbundle and a little .txt file containing the tracking info (I need to generate a separate file because the signed .appxbundle takes too long - several minutes - to regenerate each time).
The user then unzips the ZIP file, clicks on the .appxbundle and installs the app.
The tricky part is that, during the installation of the app, I would like to copy the .txt file into the LocalState folder of the app that is being installed.
Is it possible?
How can I do that?
Thanks!
If your users are going to install the app by clicking a ms-appinstaller:// link, you can attach extra data using the activationUri.
This can be a custom URL scheme that you register for your app with any url parameters. The appinstaller will call this url once the app is installed.
We use this to pass login information to the app, like this:
ms-appinstaller:?source=https://localhost:8000/myApp.appinstaller&activationUri=my-app-track-install:?campaign=billboards
If your app registers for the my-app-track-install url scheme in the Appxmanifest, then from the apps perspective the first launch is then a url activation with the url you added as activationUri. In your case you would track the install, and then proceed to launch the app normally.
You can find more info on this in the example and remark for this (semi-related) api-documentation:
https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.package.getappinstallerinfo?view=winrt-19041

overriding Mac app file associations via CFBundleDocumentTypes in info.plist

I develop a Mac app that saves and loads files of a unique type. The type is properly declared in the info.plist under CFBundleDocumentTypes, listed as LSHandlerRank: Owner and CFBundleTypeRole: Editor. I am releasing a new version of my app and I would like that if users who already have a previous version of my app on their machine install the new version but keep the old version also installed, the new version automatically takes over the file association for this type from the old version of the app. But the default OS behavior seems to be to grant the earliest installed app associated with a file type to be it's permanent owner unless the user manually changes it. I know that the command line tool duti can make association changes, and also the system file com.apple.LaunchServices.plist can be edited, but these don't seem like the best or most reliable way to go about this programmatically from an app. Is there any "right"/Apple-sanctioned way to do what I want?
The official, Apple-sanctioned way for an application to set the default application for a file type is probably to use their provided LSSetDefaultRoleHandlerForContentType function. This function sets the values stored in LaunchServices.
Here is the limited official documentation on how to use this API in Objective-C and Swift.
There doesn't appear to be any way to do this via Info.plist, as the first application get's set as the user preferred application. The user must change their preferred application, which you can facilitate with the above API.

Associate file extension with app in wp7.1

Is it possible to associate a particular file extension with my app in wp7.1?
I would like to allow the users of my app to email files of a particular type to each other and then when they click on the attached email file it would launch my app so it could process the file and add it to isolated storage.
No, it's not. You need a "special permission" from Microsoft to do it, that's how Adobe was allowed to do it.
But there's no part of the official released SDK that allows for it.

Resources