2018-09-06 19:16:23 qq_39049567 阅读数 266

下载APP(判断Ios或Android)

例子:


            String userAgent=request.getHeader("User-Agent").toLowerCase();
            System.out.println(userAgent);
            if(userAgent.indexOf("micromessenger")!= -1){//微信
                System.out.println("----------------微信");
                return "wap/download";
            }else if(userAgent.indexOf("android") != -1){//安卓
                System.out.println("----------------安卓");
                return "redirect:https:/*****/banche.apk";
            }else if(userAgent.indexOf("iphone") != -1 
                    || userAgent.indexOf("ipad") != -1 
                    || userAgent.indexOf("ipod") != -1){//苹果
                System.out.println("----------------苹果");
                return "redirect:https:/****?id=*******";
            }else{//电脑
                System.out.println("----------------电脑");
                return "redirect:https:/www.baidu.com";
            }

简单讲解

用toLowerCase()把转换字母为小写。
根据HttpServletRequest的header部分读取出User-Agent(作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.)。
根据indexOf()来进行User-Agent的逻辑判断。
根据redirect进行重定向。

2016-06-01 14:41:41 qifengle2014 阅读数 3022
1.获取手机中安装的所有App
1.1.runtime中的方法,所以要导入
#include <objc/runtime.h>
1.2.在AppDelegate.m文件中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中:
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
 NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
 NSArray *allApplications = [workspace performSelector:@selector(allApplications)];//这样就能获取到手机中安装的所有App
打印出来是这样的:
2016-06-01 11:11:41.540 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a3c50> com.apple.mobilesms.notification <file:///Applications/MessagesNotificationViewService.app>
2016-06-01 11:11:41.541 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a5850> com.apple.mobilesms.compose <file:///Applications/MessagesViewService.app>
2016-06-01 11:11:41.541 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a60e0> com.apple.Fitness <file:///Applications/Fitness.app>
2016-06-01 11:11:41.541 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a6790> com.apple.Home.HomeUIService <file:///Applications/HomeUIService.app>
2016-06-01 11:11:41.541 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a6d60> com.apple.StoreDemoViewService <file:///Applications/StoreDemoViewService.app>
2016-06-01 11:11:41.541 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a7240> com.apple.videos <file:///Applications/Videos.app>
2016-06-01 11:11:41.541 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a7800> com.apple.social.SLGoogleAuth <file:///Applications/SLGoogleAuth.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x1566a7c10> com.apple.mobileslideshow <file:///Applications/MobileSlideShow.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x15654ed10> com.apple.Health <file:///Applications/Health.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x15654f240> com.apple.news <file:///Applications/News.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x15654fa30> com.apple.AccountAuthenticationDialog <file:///Applications/AccountAuthenticationDialog.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x15654fff0> com.apple.purplebuddy <file:///Applications/Setup.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x156550450> com.apple.social.SLYahooAuth <file:///Applications/SLYahooAuth.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x156550930> com.apple.AdSheetPhone <file:///Applications/AdSheet.app>
2016-06-01 11:11:41.542 jqb[7537:2410265] app = <LSApplicationProxy: 0x156550ee0> com.apple.Diagnostics <file:///Applications/Diagnostics.app>

2.判断手机中是否安装了某个App
这就需要对我们获取到的allApplications做一下处理,这个数组中装的并不是常规的字符串,我们可以从打印结果看出,是一个LSApplicationProxy类型的,我们要把这个转换成字符串,而且我们可以从打印结果看出,这个字符串中不只包含了App的bundle ID,还包含了安装的路径,因为这个路径不唯一不确定,我们判断是否安装了某个App只需判断这个字符串中的bundle ID,所有我们还要对字符串做处理。

NSInteger zlConnt = 0;
for (NSString *appStr in allApplications) {

        NSString *app = [NSStringstringWithFormat:@"%@",appStr];//转换成字符串 


        NSRange range = [app rangeOfString:@"org.ios.appprojuct.jqb”];//是否包含这个bundle ID
       
       
if (range.length > 1) {
           
            zlConnt ++;
        }
       
    }
   
    if (zlConnt >= 1) {
       
       
NSLog(@"已安装金钱豹org.ios.appprojuct.jqb");
       
    }
     
2014-12-04 15:45:55 aijiami0 阅读数 1715

        【iOS app加密】iOS app之游戏加密防破解。iOS app游戏类应用有一个很泛滥但被视为鸡肋的问题,那就是iOS app被破解的问题。因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早期象征性的收费,之后就会免费,所以很多开发者对iOS app游戏从只能在购买者设备安装变成可免费到处安装并不关注。

         App游戏被破解攻击可能是宿命,正所谓,哪里有游戏,哪里就有黑客,哪里就有破解。iOS app游戏没有加密而被破解的问题,其实不仅仅是iOS上,几乎所有平台上,无论是pc还是移动终端,都是顽疾。可能在中国这块神奇的国度,大家都习惯用盗版了,并不觉得这是个问题,iOS app游戏开发者被破解也是麻木了。甚至某些盈利性质的公司也这么想,并且还有些平台网站把盗版软件当成噱头,义正言辞地去宣传用盗版是白富美,买正版是傻X。其实iOS app没有加密被破解的问题,并不起源于中国。所以,广大iOS app游戏开发者还是需要了解如何保护iOS app加密防破解的技术。下面就来研究下iOS app之游戏加密防破解。

         1、事后检测

        在iOS app加密防破解方面,可以做事后检测,使得破解IPA无法正常运行以达到防御作用。

        而该如何做事后检测呢,最直接的检测方法是将破解前后文件系统的变化作为特征值来检测。通过分析PoedCrackMod源码,会发现根据破解前后文件时间戳的变化,或文件内容的变化为特征来判断是不可靠的,因为这些特征都可以伪造。

         2、函数名加密

         iOS app加密防破解,为0便是破解版。当检测出破解版本时注意,为了避免逆向去除检测函数,需要多处做检测。同时检测函数要做加密处理,例如iOS app函数名加密,并要在多处进行检测。

         iOS app破解所用的工具和方法都必须运行在越狱机上,因此将安全问题托付给苹果,幻想他可以将iOS系统做得无法越狱,他提供的一切安全措施都能生效(例如安全沙箱,代码签名,加密,ASLR,non executable memory,stack smashing protection)。这是不可能的,漏洞挖掘大牛门也不吃吃素的,所以自己的iOS app还是由自己来加密守护。

        具体方法如下

        1.URL编码加密

        对iOS app中出现的URL进行编码加密,防止URL被静态分析

        2.本地数据加密

        对NSUserDefaults,sqlite存储文件数据加密,保护iOS app的帐号和关键信息。

        3.网络传输数据加密

        对iOS app客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取

        4.方法体,方法名高级混淆

        对iOS app的方法名和方法体进行混淆,保证源码被逆向后无法解析代码

        5.程序结构混排加密

        对iOS app逻辑结构进行打乱混排,保证源码可读性降到最低

       目前有这一iOS app加密保护技术的是移动应用安全保护第三方平台爱加密。

 

2016-01-16 15:16:49 qiuxuewei2012 阅读数 2438

要将App配置为iOS路由App,请在iTunes Connect的我的App中的App版本页面上传App地区范围文件
解决办法:
这里写图片描述

把Map关掉!

2016-08-10 10:35:18 zhonggaorong 阅读数 1012

显示app状态栏

[[UIApplication sharedApplication]setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];

隐藏app状态栏


[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];


App 运行状态

阅读数 49

没有更多推荐了,返回首页