怎样判断小程序是以哪种方式进入

怎样判断小程序是以哪种方式进入,第1张

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
说明:当应用程序启动时执行,应用程序启动入口。只在应用程序启动时执行一次。application参数用来获取应用程序的状态、变量等,值得注意的是字典参数:(NSDictionary )launchOptions,该参数存储程序启动的原因。
1若用户直接启动,lauchOptions内无数据;
2若由其他应用程序通过openURL:启动,则UIApplicationLaunchOptionsURLKey对应的对象为启动URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey对应启动的源应用程序的bundle ID (NSString);
3若由本地通知启动,则UIApplicationLaunchOptionsLocalNotificationKey对应的是为启动应用程序的的本地通知对象(UILocalNotification);
4若由远程通知启动,则UIApplicationLaunchOptionsRemoteNotificationKey对应的是启动应用程序的的远程通知信息userInfo(NSDictionary);
其他key还有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
UIApplicationLaunchOptionsNewsstandDownloadsKey。 如果要在启动时,做出一些区分,那就需要在下面的代码做处理。 比如:应用可以被某个其它应用调起(作为该应用的子应用),要实现单点登录,那就需要在启动代码的地方做出合理的验证,并跳过登录。
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
{
NSURL url = [options objectForKey:UIApplicationLaunchOptionsURLKey];
if(url)
{
}
NSString bundleId = [options objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
if(bundleId)
{
}
UILocalNotification localNotify = [options objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if(localNotify)
{
}
NSDictionary userInfo = [options objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(userInfo)
{
}
}

"打不开/dev/vmmon" 解决办法:

和HAXM或者docker冲突,说一下mac上haxm冲突的解决办法
:

1 启动vmware fushion前先卸载haxm的内核模块:sudo kextunload
/Library/Extensions/intelhaxmkext, 然后可以正常启动vmware fushion

2 要使用haxm模块时

先关闭vmware
fushion,

卸载vmmon模块sudo kextunload /Applications/VMware\
Fusionapp/Contents/Library/kexts/vmmonkext
(也可能移动到/System/Library/Extensions/vmmonkext, 卸载用 sudo kextunload
/System/Library/Extensions/vmmonkext)

加载haxm模块 sudo kextload /Library/Extensions/intelhaxmkext

docker冲突解决方法类似。

系统又没有加载上面的提到的模块,可以用kextstat 查看:

vmmonkext对应的模块bundleid是comvmwarekextvmx86,可以在kextstat(sudo kextstat)看到如下信息:

404    0 0xffffff7f838ad000 0xf000     0xf000     comvmwarekextvmx86 (05824040) 03552346-3760-35D0-B874-4D536DA426E5 <7 5 4 3 1>

intelhaxmkext 对应的模块bundleid是comintelkextintelhaxm,可以在kextstat(sudo kextstat)看到如下信息:

156    0 0xffffff7f838ad000 0x14000    0x14000    comintelkextintelhaxm (605) 8C4C5339-F7AA-36E5-A052-3D2E7DC6DF16 <7 5 4 3 1>

一味重新安装,不是mac (nix)解决问题的方法,那时windows上解决问题的方法。

2019(为什么2020年现在写文章,是因为新项目有需要了  不如做个文章记录一下)项目初期需要配置微信分享进行引流,就阅读了微信开放平台的文档  发现微信在2019年9月份更新sdk  这样呢在项目配置中多了咱们标题上的Universal Link问题  但这个是什么呢

Universal Link 是 iOS9 推出的一项功能,使你的应用可以通过传统的>Telegraphic Transfer(TT)电汇
进口地银行应买方申请,直接用电报发出电报付款委托书给出口地往来行,委托其向买方付款。
这种方法比信汇快,卖方可以提早收到货款,但买方却因此需要负担较高的费用。

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
说明:当应用程序启动时执行,应用程序启动入口。只在应用程序启动时执行一次。application参数用来获取应用程序的状态、变量等,值得注意的是字典参数:(NSDictionary )launchOptions,该参数存储程序启动的原因。
若用户直接启动,lauchOptions内无数据;
若由其他应用程序通过openURL:启动,则UIApplicationLaunchOptionsURLKey对应的对象为启动URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey对应启动的源应用程序的bundle ID (NSString);
若由本地通知启动,则UIApplicationLaunchOptionsLocalNotificationKey对应的是为启动应用程序的的本地通知对象(UILocalNotification);
若由远程通知启动,则UIApplicationLaunchOptionsRemoteNotificationKey对应的是启动应用程序的的远程通知信息userInfo(NSDictionary);
其他key还有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
UIApplicationLaunchOptionsNewsstandDownloadsKey。 如果要在启动时,做出一些区分,那就需要在下面的代码做处理。 比如:应用可以被某个其它应用调起(作为该应用的子应用),要实现单点登录,那就需要在启动代码的地方做出合理的验证,并跳过登录。
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
{
NSURL url = [options objectForKey:UIApplicationLaunchOptionsURLKey];
if(url)
{
}
NSString bundleId = [options objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
if(bundleId)
{
}
UILocalNotification localNotify = [options objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if(localNotify)
{
}
NSDictionary userInfo = [options objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(userInfo)
{
}
}

Reveal是一个很强大的UI分析工具,与其他几个功能相近的工具(比如PonyDebugger)相比,其最大的特点就是非常直观,用来查看app的UI布局非常方便。其常规用法是将framework集成至Xcode工程中,可参见Reveal的官网Reveal App,但我们这次讲述的却是非常规用法。
在12/21的#阿里技术嘉年华#上,我给听众展示了使用Reveal查看任意app的效果,估计是当时所展示的工具中最亮眼的一个。既然如此,我就提前在这里把Reveal的这个技巧详细的列出来。
1、越狱设备,iPhone/iTouch/iPad都可以,iOS6以上(惊闻iOS7也已经越狱了);
2、安装Reveal,Trail或正式版都可以,然后越狱设备与安装Reveal的Mac在同一wifi内。
3、点击菜单Help / Show Reveal Library in Finder,获取libRevealdylib
图1 找到libRevealdylib
4、将libRevealdylib上传到设备的/Library/MobileSubstrate/DynamicLibraries
图2 上传libRevealdylib到指定目录
5、同时编辑并上传一个libRevealplist,格式如下:
图3 设定BundleID
注意,此时是可以指定多个BundleID的,也就是说,你可以同时监控任意多的app;再扩大一步说,如果你愿意,不上传这个libRevealplist,你可以监控所有app,只要你不觉得机器很慢。。。
6、re-spring或重启iOS设备,打开你想看的app,再从Reveal界面左上角选择要连接的机器,进入不同的页面之后还可以点击右上角的刷新钮来刷新监测的页面信息。
图4 看图说话
以上是不写一行代码就能够查看任意app的方法,各位看别人app爽的时候,也可以摸摸脖子想想自己的app。
这种“高级技巧”从来没有被Reveal官方提起过,而是我们接触到Reveal之后逐步发现的。一开始的方法比较粗暴,是直接hook想看的app,把libRevealdylib插进去;后来经过@卢明华 的进一步探索,才总结出这个更简单粗暴的方法。
虽然Reveal是最直观的一个工具,但是在iOS逆向这个领域,它占的比重连1/10都不到,真正的大块头都有点难啃,相信各位都是理解的

"打不开/dev/vmmon" 解决办法:
和HAXM或者docker冲突,说一下mac上haxm冲突的解决办法:
1 启动vmware fushion前先卸载haxm的内核模块:sudo kextunload /Library/Extensions/intelhaxmkext, 然后可以正常启动vmware fushion
2 要使用haxm模块时
先关闭vmwarefushion,
卸载vmmon模块sudo kextunload /Applications/VMware\ Fusionapp/Contents/Library/kexts/vmmonkext (也可能移动到/System/Library/Extensions/vmmonkext, 卸载用 sudo kextunload /System/Library/Extensions/vmmonkext)
加载haxm模块 sudo kextload /Library/Extensions/intelhaxmkext
docker冲突解决方法类似。
系统又没有加载上面的提到的模块,可以用kextstat 查看:
vmmonkext对应的模块bundleid是comvmwarekextvmx86,可以在kextstat(sudo kextstat)看到如下信息:
404
0 0xffffff7f838ad000 0xf000 0xf000 comvmwarekextvmx86
(05824040) 03552346-3760-35D0-B874-4D536DA426E5 <7 5 4 3 1>
intelhaxmkext 对应的模块bundleid是comintelkextintelhaxm,可以在kextstat(sudo kextstat)看到如下信息:
156
0 0xffffff7f838ad000 0x14000 0x14000 comintelkextintelhaxm
(605) 8C4C5339-F7AA-36E5-A052-3D2E7DC6DF16 <7 5 4 3 1>
一味重新安装,不是mac (nix)解决问题的方法,那时windows上解决问题的方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13359298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-21
下一篇 2023-07-21

发表评论

登录后才能评论

评论列表(0条)

保存