我正在为使用钛的android和i-phone构建应用程序。我的应用程序的一部分从用户点击浏览器中的链接时开始(例如,当用户将链接键入浏览器并按下开始按钮,这会启动我的应用程序)现在问题是如果我的应用程序未安装在我想发送的电话上用户访问android/apple应用商店,以便用户可以在下载应用并在安装URL之前安装它。如果应用程序没有安装在android/iphone上将用户带到应用程序商店
如何做到这一点帮助我,因为我是钛新手。提前致谢。
我正在为使用钛的android和i-phone构建应用程序。我的应用程序的一部分从用户点击浏览器中的链接时开始(例如,当用户将链接键入浏览器并按下开始按钮,这会启动我的应用程序)现在问题是如果我的应用程序未安装在我想发送的电话上用户访问android/apple应用商店,以便用户可以在下载应用并在安装URL之前安装它。如果应用程序没有安装在android/iphone上将用户带到应用程序商店
如何做到这一点帮助我,因为我是钛新手。提前致谢。
您正在寻找Custom URL Schemes。虽然这个工程如果安装了应用程序。
对于iOS,检查(project)/ build/iphone文件夹中的Info.plist文件并查找CFBundleURLSchemes项。它在数组元素下列出的值是为自定义URL分配的名称。如果需要的话,你可以改变它,但只要知道它对你来说可能就足够了。我认为默认基本上是你的项目名称小写。
对于其他可能需要此问题的人员,以下示例使用可传递给应用程序的参数。
一旦你的名字,用它的URL,并添加://后跟任何你想要的:
mybundleurlscheme://foobar?attribute=value&another_attribute=value2
在您的应用程序,使用Ti.App.getArguments()来发现什么是传入程序。这里的警告是检测启动和暂停/恢复活动之间的区别。
最后我玩了这个,暂停/恢复最终仍然会在Ti.App.getArguments()中留下相同的值,这使得难以正确检测到新的启动vs恢复活动。
这里有几个指针:供以后比较 )
保存Ti.App.getArgumets副本(添加应用程序侦听器“恢复”事件(不是“恢复”事件),并检查钛.App.getArguments()。在“恢复”事件期间(应用程序正准备恢复时),但在“恢复”事件期间(应用程序恢复时),此值尚不可用。
当'恢复'事件具有与最初保存的值相同的值时,用户执行了暂停/恢复或者第二次启动了相同的自定义URL。在我的情况下,我可以通过处理相同但YMMV。 这是我从这个项目中进行实验的项目的代码片段。这是从几SDK版本后,所以也许现在有一个更好的办法:
// Save initial launch command line arguments
Ti.App.launchURL = '';
Ti.App.pauseURL = '';
var cmd = Ti.App.getArguments();
if ((getTypeOf(cmd) == 'object') && cmd.hasOwnProperty('url')) {
Ti.App.launchURL = cmd.url;
Ti.API.info('Launched with url = ' + Ti.App.launchURL);
}
// Save launch URL at the time last paused
Ti.App.addEventListener('pause', function(e) {
Ti.App.pauseURL = Ti.App.launchURL;
});
// After app is fully resumed, recheck if launch arguments
// have changed and ignore duplicate schemes.
Ti.App.addEventListener('resumed', function(e) {
Ti.App.launchURL = '';
cmd = Ti.App.getArguments();
if ((getTypeOf(cmd) == 'object') && cmd.hasOwnProperty('url')) {
if (cmd.url != Ti.App.pauseURL) {
Ti.App.launchURL = cmd.url;
Ti.API.info('Resumed with url = ' + Ti.App.launchURL);
}
}
});
对于安卓 在SDK 3.0,没有必要创建一个自定义的AndroidManifest.xml,而是只要打开你的tiapp.xml并找到您的节点,并确保将其添加到那里:
<activity
android:name=".MobileappActivity"
android:label="MobileApp"
android:theme="@style/Theme.Titanium"
android:configChanges="keyboardHidden|orientation"
>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.LAUNCHER" />
<data android:scheme="Mobileapp" />
</intent-filter>
</activity>