ANXMonitoringIOS 1.0.5

ANXMonitoringIOS 1.0.5

Anexia 维护。



  • anx-asafakli

ANXMonitoringIOS

Anexia Monitoring IOS 框架,收集已安装所有 pods 的版本和许可证信息,并向 Anexia 的 API 发送查询以检查是否有更新可用。

Version License Platform

示例

要运行示例项目,首先克隆仓库,然后从 Example 目录中运行 pod install

需求

  • 第一步创建一个属性列表 (.plist) 文件。例如 'Frameworks.plist'。
  • 检查您的 Pod 文件中的 Pods,并复制第一个 pod 的名称。
  • 将此名称作为 plist 的键区域粘贴。
  • https://cocoapods.org.cn/ 中找到此 pod,例如 https://cocoapods.org.cn/pods/ANXMonitoringIOS
  • 右键点击“查看 Podspec”按钮,然后按“复制链接地址”
  • 返回您的 'Frameworks.plist' 文件,并将链接作为值粘贴。
类型
▼根 字典 (1 个值)
ANXMonitoringIOS 字符串 https://github.com/CocoaPods/Specs/blob/master/Specs/3/4/b/ANXMonitoringIOS/1.0.3/ANXMonitoringIOS.podspec.json
  • 对所有 pods 重复此过程。

安装

ANXMonitoringIOS 通过 CocoaPods 提供使用。要安装它,只需将以下行添加到您的 Podfile 中

pod 'ANXMonitoringIOS'

使用说明

Swift

import ANXMonitoringIOS
...
DispatchQueue.main.async {
    if let path = Bundle.main.path(forResource: "Frameworks", ofType: "plist"), 
        let nsDictionary = NSDictionary(contentsOfFile: path) {
        //If you want to see the log use enableLog: true, if not use enableLog: false
        let _ = Monitoring(nsDictionary, enableLog: true)
    }
}

为了分享输出文件,在AppDelegate.swift中添加以下通知观察者

NotificationCenter.default.addObserver(self,selector: #selector(shareNotification),
                                    name: NSNotification.Name(rawValue: "ANXMonitoringIOS"),object: nil)
...
@objc func shareNotification(notification: NSNotification){
    if let dict = notification.userInfo as NSDictionary? {
        if let jsonData = dict["json"] as? Data {
            let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
            let documentsDirectory = paths[0]
            let filename = "\(documentsDirectory)/ANXMonitoringIOSOutput.json"
            let fileURL = URL(fileURLWithPath: filename)
            do {
                try jsonData.write(to: fileURL, options: .atomic)
            } catch {
                print("Failed to write version monitoring json.")
            }
            let vc = UIActivityViewController(activityItems: [fileURL], applicationActivities: [])
            self.window?.rootViewController?.present(vc, animated: true, completion: nil)
        }       
    }
}

AppDelegate.swift中的最终结果如下所示

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:      [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        NotificationCenter.default.addObserver(self,selector: #selector(shareNotification),
                                               name: NSNotification.Name(rawValue: "ANXMonitoringIOS"),object: nil)
        
        DispatchQueue.main.async {
            if let path = Bundle.main.path(forResource: "Frameworks", ofType: "plist"), let nsDictionary = NSDictionary(contentsOfFile: path) {
                let _ = Monitoring(nsDictionary, enableLog: true)
            }
        }
        return true
    }
    
    @objc func shareNotification(notification: NSNotification){
    if let dict = notification.userInfo as NSDictionary? {
        if let jsonData = dict["json"] as? Data {
            let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
            let documentsDirectory = paths[0]
            let filename = "\(documentsDirectory)/ANXMonitoringIOSOutput.json"
            let fileURL = URL(fileURLWithPath: filename)
            do {
               try jsonData.write(to: fileURL, options: .atomic)
            } catch {
                print("Failed to write version monitoring json.")
            }
            let vc = UIActivityViewController(activityItems: [fileURL], applicationActivities: [])
            self.window?.rootViewController?.present(vc, animated: true, completion: nil)
        }
    }
}

Objective-C

#import "AppDelegate.h"
@import ANXMonitoringIOS;
#import "ANXMonitoringIOS-Swift.h"

@interface AppDelegate ()
@end
@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(shareNotification:)
                                                 name:@"ANXMonitoringIOS"
                                               object:nil];
    dispatch_async(dispatch_get_main_queue(), ^{
        NSString* path = [[NSBundle mainBundle] pathForResource:@"Frameworks" ofType:@"plist"];
        NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:path];
        ObjCMonitoring *monitoring = [[ObjCMonitoring alloc] init:dict enableLog:YES];
    });
    return YES;
}
- (void) shareNotification:(NSNotification *) notification
{
    NSDictionary *userInfo = notification.userInfo;
    NSData *jsonData = [userInfo objectForKey:@"json"];
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *filePath = [[paths objectAtIndex:0]stringByAppendingPathComponent:@"ANXMonitoringIOSOutput.json"];
    NSMutableArray *itemToShare = [[NSMutableArray alloc] init];
    [itemToShare addObject:filePath];
    if ([jsonData writeToFile:filePath atomically:YES]) {
        UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemToShare applicationActivities:nil];
        activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll]; 
        UIViewController *topController = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
        while (topController.presentedViewController) {
            topController = topController.presentedViewController;
        }
        [topController presentViewController:activityVC animated:YES completion:nil];
    }
}

*** 请检查“构建设置”>“头文件搜索路径”,并将“${PODS_ROOT}/”添加为递归 ***

作者

Ali Safakli,移动开发者

许可证

MIT许可证(MIT)

版权所有(c)2019 ANEXIA Internetdienstleistungs GmbH

允许任何人在不收费的前提下复制此软件及其相关文档(“软件”),自由处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、许可和/或出售软件的副本,并允许向软件提供的人员这样做,前提是

以上版权声明和本许可声明应包含在软件的副本或大部分副本中。

该软件按原样提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是由合同、侵权或其他行为引起的,与软件或其使用或其它方式有关。