具有不同装饰功能的相同应用,具体取决于下载位置?

时间:2015-09-16 17:17:38

标签: android ios web-services software-distribution

有没有办法让我的应用“知道”它从哪里下载? 为了澄清,他们不会通过应用程序商店,他们将直接从我的网站下载实际的apkplist(我认为.plist是iOS的扩展名?)文件。

背景

我的情况是:您访问我公司的网站,您参与我们的承包商,并从我们的网站下载我们的应用程序。但是,根据您与之有关系的承包商,应用程序将标记具有该承包商特定的不同UI元素。我希望那里只有一个应用程序,但当你下载它时,应用程序“知道”你从哪个承包商下载它,然后使用一些逻辑,(可能调用web服务,但实现不是这里很重要的是显示特定于该承包商的品牌。

我正在尝试为Android和iOS执行此操作,因此可以理解两者或任何一个的解决方案。我希望它只是一个应用程序(1个用于iOS,1个用于Android)因为每次我们得到新的承包商时都不希望创建新的应用程序,并且因为我们只想要注册1个应用程序用于推送通知

之前被问及

我意识到我的问题是重复的

与此问题基本相同:(One iPhone app with different template based on the URL it was downloaded from

  

我想将我的iPhone应用程序提供给不同的经销商   分布。

     

当用户从其中一个经销商处下载应用程序时   打开它应用程序应连接到我们的服务器,并要求独特   这个经销商的设置。

     

问题是,每个应用程序如何“告诉”它是哪个分销商   从?

下载      

我不想为每个客户编译不同的应用程序。

我正在重新研究它,因为答案并不令人满意,并且根本没有解决问题,而且这个问题已经过时了(3岁以上)

第一个答案:

  

您想要应用程序还是iOS WebApp?如果你想要iOS应用,我不认为   您可以分发给其他经销商,因为Apple是唯一的   iOS应用程序的分销商,因此所有下载都来自那里。

     

如果您需要WebApp,则可以创建重定向到您的WebApp的下载链接   webapp读取服务器的链接,它提取你需要的一切,   布局,信息等...

他们完全错过了这一点,它与这个问题毫无关系。第二部分解释了如何获得不同的UI元素,但没有回答应用程序如何知道它应该首先请求哪些UI元素。

第二个答案:

  

我对此做了一些研究,我找到的唯一方法就是这样做   只是为每个应用创建不同的目标,然后共享源   两个应用程序的代码,但这仍然意味着你必须   做两件提交。

这也没有回答这个问题:AFAIK,多个构建目标有助于拥有单个代码库,但您仍然会维护多个应用程序,而不是单个应用程序。

1 个答案:

答案 0 :(得分:1)

对于Android,对于自行分发的应用,您有两个主要选项来创建"品牌"那个应用程序的版本。

一种是使用Gradle产品口味,每个承包商为您创造一种口味。每种口味都可以具有相当于"覆盖" sourceset,您可以在其中替换库存资源(字符串,图标,颜色等)。当您构建应用程序(Android Studio,CI服务器,手动命令行构建等)并使其构建一种或所有风格时,您将获得具有每种风味资源的每种风格的APK。如果您稍后选择拥有承包商的应用程序ID(因此可以同时安装N个承包商的应用程序),那么进行更改主要是为每个风格添加一行到您的Gradle构建文件(标识该风格的应用程序ID)并更新每个应用程序ID的GCM API密钥。

较旧的方法是更改​​标准APK的assets/中的文件以制作品牌版。这种方法更加严重,因为您无法利用Android的资源系统,并且您必须安排重新签名修改后的APK,但它会有效。

在这两种情况下,每个承包商都有专门的APK文件,因此您安排下载链接为该特定客户的承包商指向正确的文件。

com.android.vending.INSTALL_REFERRER解决方案对您来说可能不是一个很好的解决方案。除了依赖Play商店外,您的应用还必须为每个承包商提供品牌宣传,并在#34;中烘焙。某些元素(应用程序图标,应用程序名称)根本无法更改,并且必须对所有承包商都相同。其他元素(启动器图标,启动器名称)可以更改,但在某些设备上将重新启动才能生效。如果您没有收到该广播,或者它不是可识别的引用网址(例如,用户刚刚在Play商店中找到您的应用并安装了它),那么您就会遇到麻烦。