Titanium 如果应用未安装在android/iphone上,请将用户带到应用商店

Titanium 如果应用未安装在android/iphone上,请将用户带到应用商店,titanium,titanium-mobile,Titanium,Titanium Mobile,我正在用钛合金为安卓和I-phone构建一个应用程序。当用户点击浏览器中的链接时,我的应用程序的一部分启动(例如,当用户在浏览器中键入链接并按下go按钮时,这将启动我的应用程序)。现在的问题是,如果我的应用程序尚未安装在手机上,我希望将用户发送到android/apple app store,以便用户可以下载应用程序并在输入URL之前安装它 如何做到这一点,请帮助我,因为我是新的钛。提前谢谢 您正在寻找自定义URL方案。不过,如果安装了应用程序,这项功能也会起作用 对于iOS,检查(projec

我正在用钛合金为安卓和I-phone构建一个应用程序。当用户点击浏览器中的链接时,我的应用程序的一部分启动(例如,当用户在浏览器中键入链接并按下go按钮时,这将启动我的应用程序)。现在的问题是,如果我的应用程序尚未安装在手机上,我希望将用户发送到android/apple app store,以便用户可以下载应用程序并在输入URL之前安装它


如何做到这一点,请帮助我,因为我是新的钛。提前谢谢

您正在寻找自定义URL方案。不过,如果安装了应用程序,这项功能也会起作用

对于iOS,检查(project)/build/iphone文件夹中的Info.plist文件并查找CbundleUrlSchemes密钥。它在数组元素下列出的值是为自定义URL指定的名称。如果有必要,你可以改变它,但仅仅知道它对你来说就足够了。我认为默认值基本上是小写的项目名称

对于可能需要此问题的其他人,以下示例使用可以传递到应用程序中的参数

获得该名称后,在URL中使用该名称,并添加:/,后跟所需的内容:

mybundleurlscheme://foobar?attribute=value&another_attribute=value2
在您的应用程序中,使用Ti.app.getArguments()查找传入程序的内容。这里的警告是检测启动和暂停/恢复活动之间的差异

上次我玩这个游戏时,暂停/恢复会在Ti.App.getArguments()中留下相同的值,这使得正确检测新的启动和恢复活动变得更加困难

这里有几个要点:

保存Ti.App.getarguments()的副本,以备以后比较 为“resume”事件(不是“resume”事件)添加应用程序侦听器,并选中Ti.app.getArguments()。该值在“恢复”事件期间(当应用程序准备恢复时)不可用,但在“恢复”事件期间(当应用程序已恢复时)可用

当“resume”(恢复)事件的值与您最初保存的值相同时,用户会暂停/恢复,或者第二次启动相同的自定义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 );
        }
    }
});
对于Android: 在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>

您正在寻找自定义URL方案。不过,如果安装了应用程序,这项功能也会起作用

对于iOS,检查(project)/build/iphone文件夹中的Info.plist文件并查找CbundleUrlSchemes密钥。它在数组元素下列出的值是为自定义URL指定的名称。如果有必要,你可以改变它,但仅仅知道它对你来说就足够了。我认为默认值基本上是小写的项目名称

对于可能需要此问题的其他人,以下示例使用可以传递到应用程序中的参数

获得该名称后,在URL中使用该名称,并添加:/,后跟所需的内容:

mybundleurlscheme://foobar?attribute=value&another_attribute=value2
在您的应用程序中,使用Ti.app.getArguments()查找传入程序的内容。这里的警告是检测启动和暂停/恢复活动之间的差异

上次我玩这个游戏时,暂停/恢复会在Ti.App.getArguments()中留下相同的值,这使得正确检测新的启动和恢复活动变得更加困难

这里有几个要点:

保存Ti.App.getarguments()的副本,以备以后比较 为“resume”事件(不是“resume”事件)添加应用程序侦听器,并选中Ti.app.getArguments()。该值在“恢复”事件期间(当应用程序准备恢复时)不可用,但在“恢复”事件期间(当应用程序已恢复时)可用

当“resume”(恢复)事件的值与您最初保存的值相同时,用户会暂停/恢复,或者第二次启动相同的自定义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 );
        }
    }
});
对于Android: 在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>