zoukankan      html  css  js  c++  java
  • AppDelegate 中调用UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCente一定几率下出现 #28502 NSInternalInconsistencyException Invalid parameter not satisfying: bundleProxy != nil

    2019年2月27日:

    修复bug:

    查找资料:

     

     

     

    解决方式:添加分类,对系统方法替换,做非空校验

     #import "UNUserNotificationCenter+Hack.h"

    #import <objc/runtime.h>

    @implementation UNUserNotificationCenter (Hack)
    + (void)load {
    static dispatch_once_t _onceToken;
    dispatch_once(&_onceToken, ^{
    [self safeHook];
    });
    }

    + (void)safeHook {

    /*hook UNUserNotificationCenter's systemMethod - (id)initWithBundleProxy:(id)arg1;*/
    NSString * orig_initWithBundleProxyName = @"initWithBundleProxy:";

    SEL orig_initWithBundleSelector = NSSelectorFromString(orig_initWithBundleProxyName);

    if (![self instancesRespondToSelector:orig_initWithBundleSelector]) {
    return;
    }

    SEL alt_initWithBundleSelector = @selector(hk_initWithBundleProxy:);
    Method origMethod = class_getInstanceMethod(self, orig_initWithBundleSelector);
    Method altMethod = class_getInstanceMethod(self, @selector(hk_initWithBundleProxy:));

    class_addMethod(self,
    orig_initWithBundleSelector,
    class_getMethodImplementation(self, orig_initWithBundleSelector),
    method_getTypeEncoding(origMethod));
    class_addMethod(self,
    alt_initWithBundleSelector,
    class_getMethodImplementation(self, alt_initWithBundleSelector),
    method_getTypeEncoding(altMethod));

    method_exchangeImplementations(origMethod, altMethod);
    }

    - (instancetype)hk_initWithBundleProxy:(id)arg1 {

    if (nil==arg1||NSNull.null==arg1) return nil;
    // return [self hk_initWithBundleProxy:nil]; //crash
    return [self hk_initWithBundleProxy:arg1];
    }

    @end

  • 相关阅读:
    1015. 德才论
    1014. 福尔摩斯的约会
    1013. 数素数
    1012. 数字分类
    1011. A+B和C
    1010. 一元多项式求导
    1009. 说反话
    1008. 数组元素循环右移问题
    1007. 素数对猜想
    1006. 换个格式输出整数
  • 原文地址:https://www.cnblogs.com/coolcold/p/10454867.html
Copyright © 2011-2022 走看看