黑科技

iOS开发中的一些怪招.

1.获取手机当前安装的所有App

#include 《objc/runtime.h》 
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
NSLog(@"apps: %@", [workspace performSelector:@selector(allApplications)]);

2.关于手机通知的震动与声音

  • 如果要只有震动,需要服务器发到苹果推送服务器的报文中设置sound的文件名为mute.wav(没有声音的文件),这样就只有震动了。
  • 如果你要各种声音设置,如QQ,你需要设置不同的声音文件名了。
  • 如果你连震动和声音都不要,那在发送报文时直接去掉sound字段就可以。
  • 如果后台推送只想关闭震动还要声音,这个是实现不了的。只能用户在系统设置中修改
  • 前三种的实现需要客户端把想要的状态发送到服务器,让服务器做判断并配置发到苹果推送服务器的报文。
  • 3.在LLDB调试的时候很多变量PO不出来

    p UIScreen.mainScreen.bounds 会报error:property 'bounds' not found on object of type 'id'
    先执行 expr @import UIKit
    再执行 p UIScreen.mainScreen.bounds

    4.NavigationBar的返回按钮出现...

    [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];