有没有办法让我的应用程序“知道”它从哪里下载?澄清一下,他们不会经过应用程序商店,他们将下载实际的apk或plist (我认为.plist是iOS的扩展?)文件直接从我的网站。
背景
我的情况是:你去我公司的网站,你参与到我们的一个承包商,你从我们的网站下载我们的应用程序。但是,取决于您与哪个承包商有关系,应用程序使用了特定于该承包商的不同UI元素。我希望只有一个应用程序,但是当您下载它时,应用程序“知道”您从哪个承包商下载了它,然后使用了一些逻辑(可能调用一个webservice,但在这里实现这一点并不重要)来显示特定于承包商的品牌。
我正试图为安卓和iOS做到这一点,所以无论是两者的解决方案还是两者之一的解决方案都将不胜感激。我只想有一个应用程序(一个用于iOS,一个用于安卓),因为每当我们有一个新的承包商时,创建一个新的应用程序是不可取的,而且我们只需要注册一个应用程序来进行推送通知。
在面前问道
我意识到我的问题是重复的
它与这个问题本质上是一样的:(One iPhone app with different template based on the URL it was downloaded from)
我想把我的iPhone应用程序给不同的经销商分发。 当用户从一个分销商下载应用程序并打开它时,应用程序应该连接到我们的服务器,并询问这个分发服务器的独特设置。 问题是,每个应用程序如何“分辨”它从哪个发行服务器下载的? 我不想为每个客户端编译不同的应用程序。
我之所以重新回答这个问题,是因为答案不能令人满意,根本没有解决这个问题,而且这个问题很老(三年多了)。
第一个答案是:
你想要应用程序还是iOS WebApp?如果你想要iOS应用程序,我不认为你可以分发给其他发行商,因为苹果是iOS应用程序的唯一发行商,所以所有的下载都是从那里来的。 如果您想要一个WebApp,您创建一个重定向到您的etc应用程序的下载链接,以读取到服务器的链接,它将获取您所需的一切、布局、信息等。
他们完全没有抓住重点,这与问题无关。第二部分解释如何获得不同的UI元素,但不回答应用程序如何知道应该首先请求哪些UI元素。
第二个答案是:
我对此做了一些研究,我发现唯一的方法就是为每个应用程序创建不同的目标,然后在两个应用程序之间共享源代码,但这仍然意味着你仍然需要完成两次提交。
这也回答不了这个问题: AFAIK,多个构建目标有助于拥有一个单一的代码库,但是您仍然需要维护多个应用程序,而不是一个应用程序。
发布于 2015-09-16 17:51:20
对于Android,对于一个自我分发的应用程序,您有两个主要选项来创建该应用程序的“品牌”版本。
一种是使用Gradle产品口味,在这里,每个承包商创建一种风味。每种口味都可以有相当于“覆盖”源集的东西,在这里您可以替换库存资源(字符串、图标、颜色等)。有那种口味的。在构建应用程序时(Android、CI服务器、手动命令行构建等)让它构建一种或所有的口味,你就可以得到每种口味的APK和每种口味的资源。如果稍后选择使用每个承包商应用程序ID (因此N个contractors的应用程序可以同时安装),那么做出更改主要是在Gradle构建文件中添加一行内容(标识该样式的应用程序ID ),并更新每个应用程序ID的GCM键。
更老的方法是将标准APK的assets/中的文件更改为一个品牌版。这种方法令人恼火,因为你不能利用Android的资源系统,你必须安排重新签署修改后的APK,但它会起作用的。
在这两种情况下,每个承包商都有专门的APK文件,因此您可以安排您的下载链接指向该特定客户的承包商的正确链接。
对于您来说,com.android.vending.INSTALL_REFERRER解决方案可能不是一个很好的解决方案。除了对Play Store的依赖之外,您的应用程序还必须为每一个承包商都打上烙印。某些元素(应用程序图标、应用程序名称)根本无法更改,并且必须对所有承包商都是相同的。其他元素(启动程序图标、启动程序名称)可以更改,但在某些设备上将重新启动才能生效。如果你从来没有得到那个广播,或者它不是一个可识别的参考URL (例如,用户刚刚在Play Store中找到你的应用程序并安装它),那么你就有麻烦了。
https://stackoverflow.com/questions/32614845
复制相似问题