Load Flutter plugin at runtime - android

my question is, is there a way to load a Flutter Plugin (or module) from runtime. So in the end I can download a single part of the app and then I can run it directly from the code. This plugin returns a widget, which the original App can display. For example: you have an app for editing documents, and in this app you can download plugins to edit MSWord files.
Thanks!

This will almost certainly be rejected by the Apple App Store (and likely the Google Play Store), as it is ripe for hacking... imagine someone spoofing your domain, and replacing the download bits with their own injection.
The stores generally want the app to be fully determined at the review process.

Related

Can I completely rewrite my app in another language after the release in the Google Play and Appstore?

I want to start writing an application using Flutter as it suits my needs at this stage. In the future, of course, I will need to build a team and applications in Java & Swift. But if I release the application now on Flutter and create a brand, will I be able to completely re-upload the application code?
Example: for Google Play - change the Flutter code to Java.
I tried googling but can't find anything...
Yes, that is alright.
This happens all the time specially when a Proof Of Concept or hackathon idea gets adopted and has to be re-written for scale.
On iOS, it is important to keep the bundle identifier same as the original app. Similar restriction will be on Android. Other than that you can overhaul the underlying stack without any issue.
I published twice on the Play Store, the first time years ago before Flutter and the other lately made only in Flutter: the things they seem to care the most about are the format of the file you're uploading and the permissions required by your app. All the other stuff they require is to be filled manually in your app page.
I can't give you an absolute answer, but, from my experience, they don't care about how you created your apk file or your app bundle, as long the permissions and the app info you put on the app page are compliant with their policies.
Short answer, Yes.
Long answer: as long as you keep signing with the same certificate, yes.

How to prevent such websites like apkpure?

I published many versions so far. And, the users should use the most recent app. However, apkpure shows all the app list that I released.
How come this website take all the apk or abb? I don't want the website takes my applications and block the users in the app. Is there any way to do that?
Actually it's possible to do, using one of the Android features like app bundles. This could help you to verify non Google Play installation. Or even create behavior to crash/exit in such cases.
The whole idea of the approach, it's separation application features to different bundles which could installed be installed within Google play package manager. So you can check it's documentation.
Lots of android users can not access play store when removing the google restrictions, because they want apk file for install. Third party websites publish for that kind users, As well as some desktop users want APk file specially GAME APPs. I think they not Change original APK file.

App includes references to Android in the metadata

I have built an app using react-native and I wanted to release my app on the app store so I built an ipa using Xcode and submitted it to the app store.
2 days later apple rejects the app saying
Guideline 2.3.10 - Performance - Accurate Metadata
We noticed that your app or its metadata includes irrelevant third-party platform information.
Specifically, your app includes references to Android in the metadata.
Referencing third-party platforms in your app or its metadata is not permitted on the App Store unless there is specific interactive functionality.
How exactly do I solve this issue? I'm pretty sure that when building a bundle for iOS react native automatically only packages common and ios related code.
The guideline 2.3.10 reads as "Make sure your app is focused on the iOS, Mac, Apple TV or Apple Watch experience, and don’t include names, icons, or imagery of other mobile platforms in your app or metadata, unless there is specific, approved interactive functionality." as mentioned in the below link
https://developer.apple.com/app-store/review/guidelines/#accurate-metadata
you can refer to the below links to solve the issue.
https://support.magplus.com/hc/en-us/articles/203808528-iOS-Troubleshooting-Metadata-Rejected-in-App-Store-Review-Status
But you are right that when building the bundle the react native will only package common and iOS related code. But you can check in the code whether you have added any method names with android specific details. If in case you have android related explanations in comments section (// or /* comments*/), it will be ignored.
The Apple App Store doesn't check your code.
Meta Data means the data which you provide to publish your app on App Store.
Check if you have accidentally put "android" word in that anywhere.
In my case i have added "android" word in app description
They refused my app because I put an image that mentioned available on "Google play "

Can I increment version number of iOS/Android app even users don't install app to update

I create iOS and Android apps as hybrid app.
My apps send HTTP request to server, and then get HTML,CSS,JS etc.
Users don't need to update my apps until I change native side project.
It means that sometimes my apps version don't changes even I provide new functions or fix bugs.
It's wired for user. I should display increment version number when my apps have changes.
I want to increment version number of my apps even users don't install my apps to update.
Is there any good way to achieve it?
I come up with one idea to directly change setting file like Android manifest file.
However, I don't know whether it's good and works....
It is not possible for iOS, you need to submit new version for version number to change for your app
Also not possible for android as well
I don't think it is possible.
AndroidManifest is XML file attached to your APK and could not be changed when it's installed - only by application update (I mean installing new APK with incremented version number).
In iOS situation is the same. Version code is attached in Info.plist file which, like AndroidManifest, is just file attached to your application archive and could not be changed.
I don't think you can dynamically change your version code - because this is what you are trying to do.
For Android that's simply possible, for iOS, because of the Sandbox and Apples protections, not. (If not jailbroken)
You could let the app have a settings/information section where it displays current version, and this version will be loaded from your server as well as the HTML, CSS and JS.

same app with difference cosmetic features, depending on where it was downloaded?

Is there any way to make my app "aware" of where it is downloaded from?
To clarify, they will not be going through the app store, they will be downloading the actual apk or plist (I think .plist is the extension for iOS?) file directly from my website.
Background
My situation is: You go to my company website, you get involved with one of our contractors, and you download our app from our website. However, depending on which contractor you have a relationship with, the app is branded with different UI elements specific to that contractor. I want there to only be a single app, but when you download it, the app is "aware" of which contractor you downloaded it from, and then uses some logic, (likely calls to a webservice, but the implementation of that is not important here) to display branding specific to that contractor.
I am trying to do this for both android and iOS, so solutions for both or either one would be appreciated. I want there to just be a single app (1 for iOS, 1 for android) because it is not desirable to create a new app everytime we get a new contractor, and because we would only want to have to register 1 app for push notifications.
Asked before
I realize my question is a duplicate:
It is essentially the same as this question: (One iPhone app with different template based on the URL it was downloaded from)
I want to give my iPhone app to different distributors for
distribution.
When a user will download the app from one of the distributors and
open it the app should connect to our servers and ask for the unique
settings of this distributer.
The question is, how each app can "tell" from which distributer it was
downloaded from?
I don't want to compile a different application for each client.
I am reasking it because the answers were unsatisfactory and did not at all address the issue, and the question is old (over 3 years old)
The first answer:
Do you want an app or iOS WebApp? if you want iOS app, I do not think
you can distribute to other distributors, because Apple is the only
distributor of iOS applications, so all the downloads come from there.
if you want a WebApp, you create a download link redirected to your
webapp to read the link to the server it pulls everything you need,
layout, information, etc ...
They completely missed the point, it has nothing to do with the question. The second part explains how one would get the different UI elements, but does not answer how the app is aware of which UI elements it should be requesting in the first place.
The second answer:
I did some research into this and the only way I found to do it is
just to create different targets for each app then share the source
code across both the apps, but this still means that you would have to
do two submissions still.
This does not answer the question either: AFAIK, multiple build targets help to have a single code base, but you still would be maintaining multiple apps, not a single app.
For Android, for a self-distributed app, you have two main options for creating "branded" editions of that app.
One is to use Gradle product flavors, where you create one flavor per contractor. Each flavor can have what amounts to an "overlay" sourceset, where you can replace stock resources (strings, icons, colors, etc.) with ones for that flavor. When you build the app (Android Studio, CI server, manual command-line builds, etc.) and have it build one or all flavors, you get a per-flavor APK with the per-flavor resources. If, at a later point, you elect to have per-contractor application IDs (so N contractors' apps can be installed at once), making the change will mostly be a matter of adding one line per flavor to your Gradle build file (identifying the application ID for that flavor) and updating your GCM API key for each application ID.
The older approach would be to change files in assets/ of a standard APK to make a branded edition. This approach is aggravating, as you can't take advantage of Android's resource system, and you have to arrange to re-sign the modified APK, but it will work.
In both cases, you have dedicated APK files per contractor, so you arrange for your download link to point to the right one for the contractor for this particular customer.
The com.android.vending.INSTALL_REFERRER solution probably is not a great solution for you. Besides the dependency on the Play Store, your app would have to have branding for every contractor "baked in". Certain elements (application icon, application name) cannot be changed at all and would have to be the same for all contractors. Other elements (launcher icon, launcher name) could be changed, but on some devices will take a reboot to take effect. And if you don't ever get that broadcast, or it is not for a recognizable referring URL (e.g., the user just found your app in the Play Store and installed it), you're in trouble.

Categories

Resources