原创文章,转载请注明

开发中遇到这么一个问题,就是动态地指定联接服务器地址,或其它数据。如果是其它数据还好说一些,可以通过在服务器上获得的方式来弄。但如果服务器地址都需要动态指定的话。那就得另想办法了. 整个过程得到同事梅俊不少的帮助,这里表示感谢。

自定义URL_Scheme 是一个不错的解决方案。需要注意的是:在多个应用程序注册了同一种URL Scheme 的时候,iOS 系统程序的优先级高于第三方开发程序。但是如果一种URL Scheme 的注册应用程序都是第三方开发的,那么这些程序的优先级关系是不确定的。

使用URL_Scheme,具体分两步
一,、如何在浏览器中打开本地应用

在Info.plist中插入相关项,在XCode里它看起来像

用文本编辑器打开,它看起来像

到这里, 就可以用浏览器把它打开了。
   在地址栏输入  ProductID://com.terrence.ProductID 回车,就弹出是否打开本地应用的对话框
   OK

二、如何传递参数

通过第一步,可以打开应用了,但还没有解决传递参数的问题,想得到传递的参数,就要在应用的代码里做相应的回调处理,这里的项目是cocos2d-x的框架,以此为例说一下具体的步骤:
    1.实现一下 UIApplicationDelegate中的一个回调方法

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;  // Will be deprecated at some point, please replace with application:openURL:sourceApplication:annotation:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation NS_AVAILABLE_IOS(4_2); // no equiv. notification. return NO if the application can't open for some reason

看官方注释,第一个已经过期了,咱们实现第二个。

在cocos2d-x里 AppController 这个类实现了UIApplicationDelegate协议,所以在这个类里增加

//>=-Rct-=< for URL_Scheme
// no equiv. notification. return NO if the application can't open for some reason
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation NS_AVAILABLE_IOS(4_2){//std::string l_strURL = [[url absoluteString] UTF8String];std::string l_strURL = [[url query] UTF8String];std::string l_strSourceApplication = [sourceApplication UTF8String];cocos2d::CCApplication::sharedApplication()->applicationUrlScheme(l_strURL, l_strSourceApplication);return YES;
}

这里稍稍说明一下, [url query] 返回的url中 "?"后面的部分
http://blog.csdn.net/ysy441088327/article/details/7416759 这篇博客很直观地说明了NSUrl的常见用法,这里引用一下。

applicationUrlScheme方法是自定义的,它应当在CCApplicationProtocol 里被声明(成纯虚函数),然后在AppDelegate里真正实现它。

//url scheme
void AppDelegate::applicationUrlScheme(const std::string& p_strUrl, const std::string& p_strSourceApplication){CCLog("applicationUrlScheme url:%s, sourceApplication:%s", p_strUrl.c_str(), p_strSourceApplication.c_str());CheatMgr::sharedMgr()->setUrlScheme(p_strUrl);
}

到现在为止,在浏览器中输入 ProductID://com.terrence.ProductID?http://192.168.0.100:8080/gamedata
应用就被唤醒,且得到传递过来的参数

浏览器中打开IOS应用并传参相关推荐

  1. index.php user r,安装cms :在浏览器中打开http://你的网址/install/index.php 出现白屏怎样处理?...

    上传到空间了的话,就不能用LOCALHOST了,要用你绑定这个空间的域名代替,具体的应该是http://你绑定的域名/install/index.php 由热心网友提供的答案1: 方案一: 1.打开安 ...

  2. H5+在浏览器中打开相机扫描二维码

    刚开始提出要在手机浏览器中的HTML页面做扫描是有点懵的,一顿百度后搜到两种方法: 方案一,浏览器中打开相机navigator.mediaDevices.getUserMedia 自带浏览器不支持该属 ...

  3. 微信打开网址添加在浏览器中打开提示

    使用微信打开网址时,无法在微信内打开常用下载软件,手机APP等.网上流传的各种微信打开下载链接,微信已更新基本失效,最新的一个是使用链接跳转方式: http://mp.weixin.qq.com/mp ...

  4. minIO如何设置直接通过访问链接在浏览器中打开文件

    场景描述: 在数据质量中心的需求开发中,需要将测试报告存储在minIO系统上,并记录访问链接,前端获取文件链接后,直接在浏览器中打开html报告. 如以下报告链接http://XXXXXXX:9000 ...

  5. 微信网址打开php,微信打开网址添加在浏览器中打开提示

    http://caibaojian.com/weixin-tip.html 使用 http://mp.weixin.qq.com/mp/redirect?url=http://caibaojian.c ...

  6. 微信打开网址添加在浏览器中打开提示遮罩

    原文链接:http://caibaojian.com/weixin-tip.html 使用微信打开网址时,无法在微信内打开常用下载软件,手机APP等.网上流传的各种微信打开下载链接,微信已更新基本失效 ...

  7. 微信扫码提示在浏览器中打开的遮罩代码解决方式

    相信做前端的朋友一定都遇到这种情况的.当你的网页中有直接链接apk下载的时候会没有反映的.是因为在微信内是无法下载软件.手机APP等.那么这个时候一般的解决方案就是.必须要点击右上角三个点.选择&qu ...

  8. 微信中使用支付宝手机版,浏览器中打开,PHP完整综合版含回调

    推荐文章 微信H5支付完整版含PHP回调页面.代码精简2018年2月 支付宝手机支付,本身有提供一个手机网站支付DEMO,是lotusphp版本的,里面有上百个文件,非常复杂.本文介绍的接口, 只需通 ...

  9. 微信扫一扫点击下载App弹出引导页引导在外部浏览器中打开

    使用微信打开网址时,无法在微信内打开常用下载软件,手机APP等. 解决方案:弹出一个遮罩提示用户在新的浏览器窗口打开. 使用的是纯JS+HTML+CSS结合的方式,但不要一进入微信就弹出提示它在新浏览 ...

最新文章

  1. Java中的自动装箱和拆箱
  2. php 创建文件编码,php fopen创建utf8编码文件例子
  3. ecshop管理找不到index.php,前台出现找不到这样的目录,打不开某文件的提示
  4. activiti工作流引擎入门教程
  5. mysql基本数据库操作
  6. Linux C : Makefile 的编写和示例
  7. HDU Problem - 5976 Detachment(逆元,阶乘打表,数学)
  8. 概率论-2.3 随机变量的方差与标准差(重点:(X-E(X))^2的期望)
  9. sqlserver数据库中清空日志文件
  10. C语言的指针初始化特别注意一点
  11. Hybrid A*论文解析(1)
  12. C#开源文件实时监控工具TailTailUI
  13. 跨网段局域网如何互通_如何实现局域网中不同网段互访?企业网必备的高级静态路由...
  14. 设置Emeditor为Python的简易开发工具
  15. CentOS6.3 编译安装LAMP(4):编译安装 PHP5.3.27
  16. 智慧课堂辅助App的设计与实现
  17. 家用文件服务器raid,家用NAS搭建RAID指南 总有一款适合你
  18. 关于使用ArcGIS裁剪栅格后像元值发生变化的问题
  19. Android 保存图片以后通知相册刷新
  20. mysql必背50_Mysql必知必会mysql学习笔记(五)

热门文章

  1. android9获取蓝牙地址,Android获取本机蓝牙地址
  2. python玩王者荣耀皮肤碎片怎么获得_教你用Python代码免费获取王者荣耀全英雄皮肤...
  3. Redis监控利器---Redis State
  4. 百度DuerOS负责人景鲲晋升副总裁,继续向李彦宏汇报
  5. Waymo也商业化了!“早期乘客”项目开始测试收费,凤凰城人民掏了腰包
  6. 清华大学登顶亚洲第一:2019泰晤士高等教育世界大学排名发布
  7. 亚马逊发力智能音箱商业模式,Alexa正式支持付费第三方应用
  8. 阿里AI两项技术刷新行业纪录,为城市大脑,OR也为无人车?
  9. 首个谷歌TensorFlow安全风险被腾讯找到:攻击成本低、迷惑性强
  10. Spring的AOP面向切面编程