2013-03-06 78 views
0

我正在为使用钛的android和i-phone构建应用程序。我的应用程序的一部分从用户点击浏览器中的链接时开始(例如,当用户将链接键入浏览器并按下开始按钮,这会启动我的应用程序)现在问题是如果我的应用程序未安装在我想发送的电话上用户访问android/apple应用商店,以便用户可以在下载应用并在安装URL之前安装它。如果应用程序没有安装在android/iphone上将用户带到应用程序商店

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

回答

1

您正在寻找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> 
相关问题