Can I migrate purchase between applications in macOS App Store? - nsbundle

I have several similar applications (A1-A3) with hugely the same codebase. They all do similar things (diagrams), each with a specialisation for a specific use case. I am now considering to create one app (B) that sells the specialisations as an Mac App Store In App Purchase. So basically, I reduce number of applications, but will provide same diagrams, just change how to sell them from dedicated app to in-app.
How can I best ensure that buyers of the "old" applications A1-A3 can use the specialisations they bought in the new software B? I don’t want to charge them twice. So, they should be able to “restore” the specialisation that they bought as a A2 in B. Is that possible? If so, how?

Within app B do following steps in the background or on click of the restore IAP-button:
Look for the "old" app A1-A3 using NSBundle bundleWithIdentifier
get the receipt of this bundle using appStoreReceiptURL
validate the receipt
unlock functionality
Bare in mind that the terms and conditions of Apple say something along the line of "only appstore IAP should be used to unlock features; don't roll your own license mechanism"

Related

Send FCM from one Firebase account to apps compiled w/ different package names

This may really be more of a branding question but I'm asking here because it has to do with how FCM handles notifications.
We have an app that sends notifications to users based on the topic they subscribe to. The topics are specific to our customers who are businesses themselves. So the relationship is:
Our Company -> Other Company (our customers) -> Other Company's Customers (end users)
Say we have "Other Company A" and "Other Company B" with topics "A" and "B". Company A can use our system to send notifications to it's customers, and Company B can do the same. When their customer (end user) downloads and opens the app, they put in a topic A or B. This subscribes to the topic and also downloads that particular company's image, info, etc. so it is semi-branded for that company.
Now those companies want the app to show up in their own app/play stores. So we re-compiled the app changing the package name from com..app to com..app to submit to their stores even though that seemed like a brute force approach. But now notifications do not go through to the newly compiled apps.
I'm not sure what needs to change so that notifications can be sent from the same Firebase service to differently compiled apps?
And I guess the higher-level question would be is this even the correct approach for taking the app and branding it for a customer? The business only wants their customers (the end users) to see the app in their store instead of ours, and to have their image saved on the mobile devices instead of our company image when the app is installed.
Any guidance would be greatly appreciated!
It is recommend to have apps for different customers on separate Firebase projects. While combining them into a single project may work in some cases, there is no guarantee this may continue to work as you scale.
For example, you can only have a limited number of OAuth client IDs in a project, and a limited number of apps. Once you hit those limits, you'll need to set up multiple projects anyway, so you might as well do that straight away and find another way to optimize rolling out apps for new customers.

Game Maker Studio

Does Game Maker have the capability to do multiplayer in the form of many different rooms. I'm trying to create an online Arena style gladiator type game, and I can't have an obscene amount of characters in one arena, so I need many different rooms, created upon need. Can I have different rooms functioning at the same time in game maker, or so I need to cycle thru them to accomplish everything? The game will be turn based, and will be one where you'd log on to take your action, similar to how Frozen Synapse can be run over an extended length of time. Does anyone have any ideas of how to accomplish this or something similar?
Yes you can have multiple rooms funtioning at the same time. I haven't worked much with GameMaker multiplayer, but it is possible since you can do all basic networking stuff.
How hard it is depends on how you want the game to work: Peer to peer or with a host-server.
You an take a look at this tutorial about servers and clients if you haven't already: https://help.yoyogames.com/hc/en-us/articles/216754698-Networking-Overview
If you're using a gamemaker server, short answer is no.
However, if you'd like to use a dedicated server, you can make it possible, because then the server hosts and stores all game information, and the client (players) only render the information that is important to them.
Gamemaker Studio can not by its own run two rooms at the same time naturally, so if you'd like to create something more complex, it's the safest to create a dedicated server elsewhere.
Dedicated servers only transact information, but the game renders from the client.

In a microservice environment, who should 'own' services that are no longer in active development?

In typical development environment, sizeable teams are typically aligned with largish projects. New features are shoe horned into existing monoliths. The team owns the monolith. Despite many parts of the monolith being no longer developed they are still being released and owned by the associated team. If there is a fix to be made it is clearly that team who perform it.
In a microservices world, many smaller services are built, typical by small teams of 1s and 2s that once built may no longer require changes. The developers then move on to something else. The service may be a dependency of a number of applications. There is no specific 'team' associated with the service.
So, when changes are required to the service, how does one assign ownership?
There is a saying where I come from "a dog with too many owners dies of starvation", meaning, when everyone things someone else is in charge, no one is really in charge even if people have agreed to share the responsibility.
There are many ways to address your situation but in all of them someone should be in charge. Some ways to address this issue:
A single person should be responsible for the project. If this person moves to a new team, he or she should appoint the new project manager. If this person quits the company, someone else should be chosen by the remaining staff.
Periodically check who is in charge of each project. If no one is in responsible, then act fact and assign someone.
Everyone who was just appointed to a project should necessarily check if he or she can keep evolving the project. For instance, if the documentation is badly written or absent, or if the source code is too hard to read, then the newly appointed person should ask the previously responsible people during project handover.
There is no silver bullet but there are principles you can follow that will avoid some future headaches.
Like #Akira said. If everyone is responsible for one microservice, noone is.
Shared responsibility
Every two weeks team which is responsible for given MS will change.
So according to the date, you will have the owner.
Align teams according to the product they serve
Every team is responsible for Product, which is not microservice. It's group of microservices, which together bring value to the business. They work together to accomplish business needs in given domain. You may understand Product as a system, which is constructed with few microservices working together.
Such team should have domain knowledge about the whole system and should be more effective in supporting MS, which are under their's product.
Team which is created and destroyed after creating new MS
Thats kind of management is problematic. If MS isn't just another CMS, but very complex solution it may become even more problematic. People who wrote MS should be responsible for supporting it. If they are to value for the company to become supporters, take someone else, but let them communicate and ask question to the creators of MS. Otherwise MS may be come mess sooner or later.
Whatever you choose, keep your MS documentation up to date.

Is Firebase an all-purpose database?

I've been reading about Firebase and playing with it for a short while. The idea (BAAS) and implementation are impressive, and having programmed with Javascript it seems a viable choice. Not having to deal with scaling and other server side concerns makes it even more attractive.
My question is: generally speaking, is Firebase a first class back-end candidate for any average data-based application? e.g. billing, CRM, e-commerce, social, location based, etc. I do not include super light or heavy extremes such as a basic chat, or a nuclear plant monitor...
The answer may not be a clear yes/no, but was it built to support the general application space, or just stand out as a real-time read/write data service?
Would appreciate answers based on experience and existing production applications.
Thanks
Yes, Firebase is intended to be a first class back-end for any data based Web, iOS or Android application. The service offers real-time data reads and writes, but also comes with a powerful and flexible security system that allows you to write secure client-only apps, without needing any server code to enforce data boundaries.
There are several apps in production listed on the front page as customer and on the app showcase page on https://firebase.google.com/customers/
Firebase is now more capable and is considered as a full stand-alone back-end, especially after the introduction of cloud function. https://firebase.google.com/docs/functions/
Firebase may not have support for transaction spanning multiple business objects.
e.g. When a sales order is booked then it needs to update inventory for multiple items, update billing in receivables, give sales credit to multiple sales persons etc.
Firebase team is supposed to come up with a database trigger option which will make all these happen.

Are there any Flex/AS3 multiuser multi-chatroom apps?

I need a custom multi-user multi-chatroom app to extend an existing Flex app that I have.
I obviously wouldn't like to develop it from scratch, but focus only on the customizations and integration.
Are there any products (free or commercial) that provide multi-chatroom functionality from which I could start?
http://www.adobe.com/devnet/flashplatform/services/collaboration.html
Have a look at Union Platform chat tutorial:
http://www.unionplatform.com/?page_id=1216
You can also check BlazeDS chat example:
http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=build_apps_3.html
I wrote an AS3 Chat Application that makes use of Player.io's free server package of 20 gigs of data transfer, other small limitations. The app is open source, and you can find the source code on GitHub.
The chat itself only uses one room, since it is averaging only around 10-15 users on at any time and its specialized to helping flash game developers, meaning it has a code storage area (simple database interaction), developer links, actionscript help, etc, but it does have some basic features if you want to see how I code them.
The chat itself has a few features you might be interested in checking out even if you don't use the source code, are such:
Support for authentication on server-side
Different types of users. (Currently overlord admin, admin, mod, developer, regular users)
Editable individual user data (Currently saves how long each user has spent on the app)
Server-side Silencing and banning individual users
Support for tags near usernames
Sound Settings on message received
Code box for users to share large amounts of text without spamming the chat
Support for multiple rooms (uses 1 public currently + 1 hidden for select users)
The server-side is written in C# and hosted on playerio.com and is supposed to be an authoritative server (meaning it checks all the client data and makes sure its valid before doing anything). The server code is also included on github.
If your interested you can comment and I will answer any questions.

Resources