Enable multiplayer games with GameCenter between iOS and macOS players - ios

I am trying to create a multiplayer game that is playable between iOS an macOS users.
To enable multiplayer gaming I make use of Apple's GameKit framework & GameCenter service for matchmaking.
Initially I tried to use the same bundle id and at least then it was possible for players to find each other between iOS and macOS platforms, however Apple doesn't allow to use the same bundle id between iOS and macOS apps in the AppStore.
So now that I changed my bundle id for iOS to be different, it's not possible for iOS players to find macOS players anymore and vice versa when using GameCenter / GameKit.
I read up in the documentation and there's supposed to be a "Multiplayer Compatibility" section in AppStore Connect that should allow iOS and macOS to play against one another.
In iTunes Connect, you can provide compatibility information that describes which versions of your game can see each other during the matchmaking process. Each compatible group of devices and versions of your game are matched as separate groups.
The ability to create these matchmaking groups is quite flexible:
When you create a new version of a game (such as a bug fix), you can declare whether the new version is compatible with the older versions (and which ones, specifically).
You can create distinct games (with different bundle identifiers) and still allow them to play against each other.
You can create distinct games on both OS X and iOS and match them against each other.
However when I log in into AppStore connect this section seems to be gone. I didn't find anywhere if Apple removed this functionality somewhere from AppStore connect.
So my question is, is it still possible to somehow enable this functionality for my iOS and macOS app?
P.S.: Adding the iOS and macOS bundle id's to the same group in AppStore Connect doesn't seem to work either. I guess these groups are only meant to share leaderboards and achievements between platforms?

Related

Shared iAPs/subscription among iPhone, iPad and macOS Catalyst apps?

I look around but could not find an answer. If my iOS/iPadOS and macCatalyst are based on a subscription or contain in-app purchases, is it possible to have the same subscription for the 3 apps, or restore the purchase for all 3 apps? As in, when the user subscribes on iPad, can the subscription carry over to the macCatalyst app, using only Apple's technologies?
Tested this question, from different applications come different recipes from the same ICloud. Merge failed.
As of March 2020, this is now possible using Universal Purchases:
https://developer.apple.com/support/universal-purchase
Distribute iOS, iPadOS, watchOS, macOS, and tvOS versions of your app as a universal purchase to let customers easily enjoy your app and in‑app purchases across platforms. They’ll only need to purchase once on the App Store.
This seems to rely on the use of the 'use iOS bundle identifier' to make sure the bundle ids are the same. With Catalyst apps released under xCode 11.3 or earlier there is additional work involved to move them over to a single bundle id

Can an iOS app be added later to an Apple Watch only app?

Beginning with WatchOS 6 Apple makes it possible to ship Watch-only apps. While we can first ship an iOS app and later add a companion app for the Apple Watch, I'm wondering if the reverse is possible as well:
Can we ship an Apple Watch-only app, which is installed via WatchOS App Store directly on the watch and then later add an iOS app to it?
This is important to me as I don't want to put a barrier on front of this option. You may still find out after publishing your watch app that it will profit from having a companion app on the iPhone. Or you might find that your watch app will gain more publicity when its iOS companion app becomes visible in the iOS App Store as well.
Yes, this is simply a matter of going to the project at the top level of the project navigator, then adding a new iOS target to your Apple Watch project.

Is it possible to run an iOS app store?

I would like to know that is it possible to implement and run a new app store for iOS apps? I know, iOS devices must download apps only from AppStore, but is there any way to run an independence iOS AppStore website or app?
The answer is NO. period.
3.2.2 Unacceptable
(i) Creating an interface for displaying third party apps, extensions, or plug-ins similar to the App Store or as a general-interest collection.
App Store Guidelines
Jailbreak app stores: something like Cydia. You can do pretty much anything with / on jailbroken devices.
You can easily create a website that is a subset of the official AppStore with different filters / rankings / search capabilites etc. In the end you can only support the apps available in the real AppStore since that is the only place to install apps from
Create an entire development environment and ecosystem to create apps which can be installed inside your new AppStore2.0 app. But good luck doing that complex task and good luck getting it through the apple review process.
Enter to Apple enterprise program - https://developer.apple.com/programs/enterprise/

How to reduce my iOS app's bundle size?

I am working on an iOS app that integrates with multiple bluetooth devices (e.g. printers and barcode scanners). Each of the devices comes with it's own version of SDK and most of them just have objective-c/swift SDKs but not javascript SDKs.
Would like to find out what is the best way to reduce the app bundle size at the same time supporting multiple devices ?
Based on my investigations,
iOS doesn't allow downloading objective-c/swift code dynamically during runtime, hence the option of downloading the SDKs after the user having installed the app is ruled out.
Would like to get a feedback on the feasibility of the below solution. Also let me know if there is a better solution.
iOS version 8+ support embedded frameworks - Have separate iOS driver
apps for each of the supported devices which just installs the device
SDK as a shared embedded framework so that the parent app can
dynamically link to the shared embedded framework if one that matches
the connected device is available, otherwise force the user to
download the respective driver app.
This question has gone unanswered for a little while, so you may have already figured this out, but no, you cannot make shared embedded frameworks on iOS. Only Apple can do that. All of the frameworks you use must be either provided by Apple or embedded inside your app.

Detect apps on my iphone without being rejected by Apple?

My app has been rejected by Apple for the following reason "Our team is aware that iHasApp is using publicly available APIs, however this specific implementation abuses canOpenURL: to detect all apps on a given device".So I start to look for another way to list all the installed app in the user's phone.So my questions are:
1/Are they some web apps which can detect the installed apps?
2/is it possible to detect apps using their icones?
If you implement a workaround, the chances are that Apple will still reject your app anyway.
Obtaining a list of applications installed on the phone is evidently disallowed. Apple has rejected apps using lots of methods to detect this:
Your solution of "canOpenURL"
This solution using private apis List of all apps installed on iOS device and their position on the Home Screen (Springboard)
This (dated) answer using file path manipulation and private apis: get list of installed applications on iphone objective-c

Resources