ソースを参照

tijiao

master
jjkj 2年前
コミット
f2ba0a1113
60個のファイルの変更6166行の追加0行の削除
  1. +12
    -0
      im-client-ios/AlampfireUtil.swift
  2. +11
    -0
      im-client-ios/Assets.xcassets/AccentColor.colorset/Contents.json
  3. +116
    -0
      im-client-ios/Assets.xcassets/AppIcon.appiconset/Contents.json
  4. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(1).png
  5. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(10).png
  6. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(11).png
  7. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(12).png
  8. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(13).png
  9. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(14).png
  10. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(15).png
  11. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(16).png
  12. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(2).png
  13. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(3)-1.png
  14. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(3)-2.png
  15. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(3).png
  16. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(4).png
  17. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(5).png
  18. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(6).png
  19. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(7).png
  20. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(8).png
  21. バイナリ
      im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(9).png
  22. +6
    -0
      im-client-ios/Assets.xcassets/Contents.json
  23. +36
    -0
      im-client-ios/ContentView.swift
  24. +23
    -0
      im-client-ios/ImagePicker.swift
  25. +6
    -0
      im-client-ios/Preview Content/Preview Assets.xcassets/Contents.json
  26. +149
    -0
      im-client-ios/camera/ScanView.swift
  27. +25
    -0
      im-client-ios/dsbridge/Dsbridge.swift
  28. +15
    -0
      im-client-ios/file/NSOpenPanel.swift
  29. +54
    -0
      im-client-ios/file/fileSelect.swift
  30. +8
    -0
      im-client-ios/im-client-ios 2022-01-04 11-08-56/App Thinning Size Report.txt
  31. +59
    -0
      im-client-ios/im-client-ios 2022-01-04 11-08-56/DistributionSummary.plist
  32. +20
    -0
      im-client-ios/im-client-ios 2022-01-04 11-08-56/ExportOptions.plist
  33. +2948
    -0
      im-client-ios/im-client-ios 2022-01-04 11-08-56/Packaging.log
  34. +523
    -0
      im-client-ios/im-client-ios 2022-01-04 11-08-56/app-thinning.plist
  35. バイナリ
      im-client-ios/im-client-ios 2022-01-04 11-08-56/im-client-ios-E1CE033F-EDD1-4252-A036-9FB78E2BB250.ipa
  36. +4
    -0
      im-client-ios/im-client-ios-Bridging-Header.h
  37. +17
    -0
      im-client-ios/im_client_iosApp.swift
  38. +22
    -0
      im-client-ios/notifications/AppDelegate.swift
  39. +60
    -0
      im-client-ios/notifications/UserNotificationManager.swift
  40. +22
    -0
      im-client-ios/notifications/delegate.swift
  41. +65
    -0
      im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/DistributionSummary.plist
  42. +22
    -0
      im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/ExportOptions.plist
  43. +141
    -0
      im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/Packaging.log
  44. バイナリ
      im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/im-client-ios.ipa
  45. +33
    -0
      im-client-ios/sysInfo/SysInfo.swift
  46. +8
    -0
      im-client-ios/test/testFile.swift
  47. +298
    -0
      im-client-ios/webview/WebViewUI.swift
  48. +8
    -0
      im-client-ios/对的.m
  49. +36
    -0
      im-client-iosTests/im_client_iosTests.swift
  50. +42
    -0
      im-client-iosUITests/im_client_iosUITests.swift
  51. +32
    -0
      im-client-iosUITests/im_client_iosUITestsLaunchTests.swift
  52. +5
    -0
      ywt-client-ios-Info.plist
  53. +1022
    -0
      ywt-client-ios.xcodeproj/project.pbxproj
  54. +7
    -0
      ywt-client-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  55. +8
    -0
      ywt-client-ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  56. +5
    -0
      ywt-client-ios.xcodeproj/project.xcworkspace/xcuserdata/jjkj.xcuserdatad/IDEFindNavigatorScopes.plist
  57. バイナリ
      ywt-client-ios.xcodeproj/project.xcworkspace/xcuserdata/jjkj.xcuserdatad/UserInterfaceState.xcuserstate
  58. +98
    -0
      ywt-client-ios.xcodeproj/xcshareddata/xcschemes/im-client-ios.xcscheme
  59. +168
    -0
      ywt-client-ios.xcodeproj/xcuserdata/jjkj.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  60. +32
    -0
      ywt-client-ios.xcodeproj/xcuserdata/jjkj.xcuserdatad/xcschemes/xcschememanagement.plist

+ 12
- 0
im-client-ios/AlampfireUtil.swift ファイルの表示

@@ -0,0 +1,12 @@
//
// AlampfireUtil.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/1/19.
//

import Foundation
import UIKit
import Alamofire



+ 11
- 0
im-client-ios/Assets.xcassets/AccentColor.colorset/Contents.json ファイルの表示

@@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

+ 116
- 0
im-client-ios/Assets.xcassets/AppIcon.appiconset/Contents.json ファイルの表示

@@ -0,0 +1,116 @@
{
"images" : [
{
"filename" : "jjtb(3).png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "jjtb(4).png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "jjtb(5).png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "jjtb(6).png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "jjtb(7).png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "jjtb(8).png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"filename" : "jjtb(2).png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "jjtb(9).png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"filename" : "jjtb(10).png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"filename" : "jjtb(3)-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "jjtb(11).png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "jjtb(12).png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "jjtb(3)-2.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"filename" : "jjtb(13).png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "jjtb(14).png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"filename" : "jjtb(15).png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"filename" : "jjtb(16).png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"filename" : "jjtb(1).png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(1).png ファイルの表示

変更前 変更後
幅: 1024  |  高さ: 1024  |  サイズ: 81 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(10).png ファイルの表示

変更前 変更後
幅: 20  |  高さ: 20  |  サイズ: 2.5 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(11).png ファイルの表示

変更前 変更後
幅: 29  |  高さ: 29  |  サイズ: 2.6 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(12).png ファイルの表示

変更前 変更後
幅: 58  |  高さ: 58  |  サイズ: 2.8 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(13).png ファイルの表示

変更前 変更後
幅: 80  |  高さ: 80  |  サイズ: 3.0 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(14).png ファイルの表示

変更前 変更後
幅: 76  |  高さ: 76  |  サイズ: 6.1 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(15).png ファイルの表示

変更前 変更後
幅: 152  |  高さ: 152  |  サイズ: 16 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(16).png ファイルの表示

変更前 変更後
幅: 167  |  高さ: 167  |  サイズ: 22 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(2).png ファイルの表示

変更前 変更後
幅: 120  |  高さ: 120  |  サイズ: 5.5 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(3)-1.png ファイルの表示

変更前 変更後
幅: 40  |  高さ: 40  |  サイズ: 3.2 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(3)-2.png ファイルの表示

変更前 変更後
幅: 40  |  高さ: 40  |  サイズ: 3.2 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(3).png ファイルの表示

変更前 変更後
幅: 40  |  高さ: 40  |  サイズ: 3.2 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(4).png ファイルの表示

変更前 変更後
幅: 60  |  高さ: 60  |  サイズ: 3.4 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(5).png ファイルの表示

変更前 変更後
幅: 58  |  高さ: 58  |  サイズ: 4.6 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(6).png ファイルの表示

変更前 変更後
幅: 87  |  高さ: 87  |  サイズ: 8.2 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(7).png ファイルの表示

変更前 変更後
幅: 80  |  高さ: 80  |  サイズ: 7.9 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(8).png ファイルの表示

変更前 変更後
幅: 120  |  高さ: 120  |  サイズ: 14 KiB

バイナリ
im-client-ios/Assets.xcassets/AppIcon.appiconset/jjtb(9).png ファイルの表示

変更前 変更後
幅: 180  |  高さ: 180  |  サイズ: 24 KiB

+ 6
- 0
im-client-ios/Assets.xcassets/Contents.json ファイルの表示

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

+ 36
- 0
im-client-ios/ContentView.swift ファイルの表示

@@ -0,0 +1,36 @@
//
// ContentView.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2021/12/27.
//

import SwiftUI
import WebKit
import UIKit


struct ContentView: View {
@State private var image: Image?
@State private var showingImagePicker = false
var body: some View {
VStack {
image?
.resizable()
.scaledToFit()
ImagePicker()
// Button("Select Image") {
// self.showingImagePicker = true
// }
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

+ 23
- 0
im-client-ios/ImagePicker.swift ファイルの表示

@@ -0,0 +1,23 @@
//
// ImagePicker.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/1/4.
//

import Foundation
import SwiftUI

struct ImagePicker: UIViewControllerRepresentable {
typealias UIViewControllerType = WebViewUI
func makeUIViewController(context: Context) -> WebViewUI {
let picker = WebViewUI()
return picker
}
func updateUIViewController(_ uiViewController: WebViewUI, context: Context) {
}
}

+ 6
- 0
im-client-ios/Preview Content/Preview Assets.xcassets/Contents.json ファイルの表示

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

+ 149
- 0
im-client-ios/camera/ScanView.swift ファイルの表示

@@ -0,0 +1,149 @@
//
// CameraView.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/3/10.
//

import SwiftUI
import AVFoundation

let cameraPreview = CameraPreview()
fileprivate var captureSession = AVCaptureSession()
fileprivate var videoDataOutput = AVCaptureVideoDataOutput()


struct CameraPreviewHolder: ContentView{
typealias NSViewType = CameraPreview
func makeNSView(context: NSViewRepresentableContext<CameraPreviewHolder>) -> CameraPreview {
let cameraPreview = CameraPreview()
return cameraPreview
}
func updateNSView(_ nsView: CameraPreview, context: NSViewRepresentableContext<CameraPreviewHolder>) {
}
}
final class CameraPreview: NSView {
private var tmp:URL?
init() {
super.init(frame: .zero)
var allowedAccess = false
let blocker = DispatchGroup()
blocker.enter()
AVCaptureDevice.requestAccess(for: .video) { flag in
allowedAccess = flag
blocker.leave()
}
blocker.wait()
guard allowedAccess else {
print("No camera access")
return
}
showCameraViewSeting()
}
func showCameraViewSeting() {
let session = captureSession
session.beginConfiguration()
//分辨率
session.sessionPreset = AVCaptureSession.Preset.high
guard let videoDevice = AVCaptureDevice.default(for: .video) else {
print("No video device")
return
}
guard let videoDeviceInput = try? AVCaptureDeviceInput(device: videoDevice),
session.canAddInput(videoDeviceInput)
else {
print("Unable to determine video device input")
return
}
session.addInput(videoDeviceInput)
let videoOutput = videoDataOutput
videoOutput.alwaysDiscardsLateVideoFrames = true
if session.canAddOutput(videoOutput) {
session.addOutput(videoOutput)
}
session.commitConfiguration()
captureSession = session
self.wantsLayer = true
self.layer = AVCaptureVideoPreviewLayer()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var videoPreviewLayer: AVCaptureVideoPreviewLayer {
return self.layer as! AVCaptureVideoPreviewLayer
}
override func viewDidMoveToSuperview() { // on iOS .didMoveToSuperview
super.viewDidMoveToSuperview()
if nil != self.superview {
self.videoPreviewLayer.session = captureSession
self.videoPreviewLayer.videoGravity = .resizeAspect
captureSession.startRunning()
} else {
captureSession.stopRunning()
}
}
func scan(){
videoDataOutput.setSampleBufferDelegate(cameraCaptureDelegate, queue: DispatchQueue.main)
}
func removeCameraPreview() {
self.removeFromSuperview()
}
}
class CameraCaptureDelegate: NSObject, AVCaptureVideoDataOutputSampleBufferDelegate{
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
let cgImage:CGImage = imageFromSampleBuffer(sampleBuffer: sampleBuffer)
print("\(cgImage)")
//获取的图片经过EFQRCode(GitHub上搜这个库)识别,如果含有二维码,即可识别出二维码数据
// let result = EFQRCode.recognize(image: cgImage)
// print("didOutput : \(String(describing: result))")
}
func captureOutput(_ output: AVCaptureOutput, didDrop sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
print("didDrop sampleBuffer")
}
}
func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer) -> CGImage {
let imageBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
let ciImage : CIImage = CIImage(cvPixelBuffer: imageBuffer)
let context:CIContext = CIContext.init(options: nil)
let cgImage:CGImage = context.createCGImage(ciImage, from: ciImage.extent)!
return cgImage
}

+ 25
- 0
im-client-ios/dsbridge/Dsbridge.swift ファイルの表示

@@ -0,0 +1,25 @@
//
// Dsbridge.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/1/5.
//

import Foundation
typealias JSCallback = (String, Bool)->Void

class Dsbridge: NSObject {
//MUST use "_" to ignore the first argument name explicitly。
@objc func testSyn( _ arg:String) -> String {
return String(format:"%@[Swift sync call:%@]", arg, "test")
}
@objc func testAsyn( _ arg:String, handler: JSCallback) {
handler(String(format:"%@[Swift async call:%@]", arg, "test"), true)
}
@objc func takePhoto( _ arg:String) -> String {
return String(format:"%@[Swift sync call:%@]", arg, "test")
}
}

+ 15
- 0
im-client-ios/file/NSOpenPanel.swift ファイルの表示

@@ -0,0 +1,15 @@
//
// FileObtain.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/1/6.
//

import Foundation
import UIKit

public class NSOpenPanel : NSSavePanel {
private func selectUploadFileFromICouldDrive() {
}
}

+ 54
- 0
im-client-ios/file/fileSelect.swift ファイルの表示

@@ -0,0 +1,54 @@
//
// ContentView.swift
// fileModel
//
// Created by 陈春杨 on 2022/2/16.
//

import SwiftUI

struct ContentView: View {
var body: some View {
Button {
let path = loadFile()

} label: {
HStack {
Image("upload").resizable().frame(width: 15, height: 15)
Text("上传文件")
.foregroundColor(Color.white)
.font(Font.system(size: 14))
}.frame(width: 106, height: 32)
.background(Color.red)
}.buttonStyle(PlainButtonStyle())
.cornerRadius(4)
.padding(EdgeInsets(top: 29, leading: 0, bottom: 29, trailing: 0)) }
// 文件选择
func loadFile(isFolder: Bool = false, openFinder: String = "", fileTypes: [String] = [String]()) -> String {
let dialog = NSOpenPanel()
dialog.title = "选择文件"
dialog.showsResizeIndicator = true
dialog.showsHiddenFiles = false
dialog.allowsMultipleSelection = false
dialog.canChooseDirectories = isFolder
dialog.canChooseFiles = !isFolder
if !fileTypes.isEmpty {
dialog.allowedFileTypes = fileTypes
}
if !openFinder.isEmpty, let url = URL(string: openFinder) {
dialog.directoryURL = url
}
if dialog.runModal() == .OK, let path = dialog.url?.path {
return path
} else {
return ""
}
}

}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

+ 8
- 0
im-client-ios/im-client-ios 2022-01-04 11-08-56/App Thinning Size Report.txt ファイルの表示

@@ -0,0 +1,8 @@

App Thinning Size Report for All Variants of im-client-ios

Variant: im-client-ios-E1CE033F-EDD1-4252-A036-9FB78E2BB250.ipa
Supported variant descriptors: [device: iPhone8,1, os-version: 15.0], [device: iPhone14,3, os-version: 15.0], [device: iPad6,8, os-version: 15.0], [device: iPad8,7, os-version: 15.0], [device: iPhone10,4, os-version: 15.0], [device: MacFamily20,1, os-version: 15.0], [device: iPhone12,8, os-version: 15.0], [device: iPad8,11, os-version: 15.0], [device: iPhone14,5, os-version: 15.0], [device: iPhone10,3, os-version: 15.0], [device: iPad13,7, os-version: 15.0], [device: iPhone9,1, os-version: 15.0], [device: iPhone13,1, os-version: 15.0], [device: iPhone10,2, os-version: 15.0], [device: iPhone11,6, os-version: 15.0], [device: iPad13,6, os-version: 15.0], [device: iPhone14,2, os-version: 15.0], [device: iPad7,1, os-version: 15.0], [device: iPad5,1, os-version: 15.0], [device: iPad6,11, os-version: 15.0], [device: iPad11,1, os-version: 15.0], [device: iPhone12,1, os-version: 15.0], [device: iPad6,7, os-version: 15.0], [device: iPad13,4, os-version: 15.0], [device: iPad6,3, os-version: 15.0], [device: iPad11,2, os-version: 15.0], [device: iPhone9,4, os-version: 15.0], [device: iPad5,4, os-version: 15.0], [device: iPad7,6, os-version: 15.0], [device: iPad7,11, os-version: 15.0], [device: iPad6,4, os-version: 15.0], [device: iPad7,4, os-version: 15.0], [device: iPad13,5, os-version: 15.0], [device: iPad7,2, os-version: 15.0], [device: iPad8,4, os-version: 15.0], [device: iPad13,10, os-version: 15.0], [device: iPad8,2, os-version: 15.0], [device: iPad7,12, os-version: 15.0], [device: iPad12,1, os-version: 15.0], [device: iPad11,3, os-version: 15.0], [device: iPhone11,8, os-version: 15.0], [device: iPad8,12, os-version: 15.0], [device: iPhone9,3, os-version: 15.0], [device: iPhone12,3, os-version: 15.0], [device: iPad13,9, os-version: 15.0], [device: iPad5,2, os-version: 15.0], [device: iPhone13,3, os-version: 15.0], [device: iPad14,2, os-version: 15.0], [device: iPad8,3, os-version: 15.0], [device: iPhone11,4, os-version: 15.0], [device: iPhone12,5, os-version: 15.0], [device: iPhone13,4, os-version: 15.0], [device: iPhone10,5, os-version: 15.0], [device: iPhone8,2, os-version: 15.0], [device: iPad13,8, os-version: 15.0], [device: iPad6,12, os-version: 15.0], [device: iPad8,8, os-version: 15.0], [device: iPad8,1, os-version: 15.0], [device: iPad7,3, os-version: 15.0], [device: iPad8,9, os-version: 15.0], [device: iPad5,3, os-version: 15.0], [device: iPod9,1, os-version: 15.0], [device: iPhone8,4, os-version: 15.0], [device: iPhone14,4, os-version: 15.0], [device: iPad11,4, os-version: 15.0], [device: iPad13,2, os-version: 15.0], [device: iPhone10,6, os-version: 15.0], [device: iPad11,7, os-version: 15.0], [device: iPad13,1, os-version: 15.0], [device: iPad12,2, os-version: 15.0], [device: iPad8,6, os-version: 15.0], [device: iPad7,5, os-version: 15.0], [device: iPad8,10, os-version: 15.0], [device: iPad13,11, os-version: 15.0], [device: iPhone9,2, os-version: 15.0], [device: iPhone13,2, os-version: 15.0], [device: iPhone11,2, os-version: 15.0], [device: iPad11,6, os-version: 15.0], [device: iPad8,5, os-version: 15.0], [device: iPhone10,1, os-version: 15.0], and [device: iPad14,1, os-version: 15.0]
App + On Demand Resources size: 25 KB compressed, 116 KB uncompressed
App size: 25 KB compressed, 116 KB uncompressed
On Demand Resources size: Zero KB compressed, Zero KB uncompressed

+ 59
- 0
im-client-ios/im-client-ios 2022-01-04 11-08-56/DistributionSummary.plist ファイルの表示

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>im-client-ios.ipa</key>
<array>
<dict>
<key>architectures</key>
<array>
<string>arm64</string>
</array>
<key>buildNumber</key>
<string>1</string>
<key>certificate</key>
<dict>
<key>SHA1</key>
<string>F9EBE3931A79A8A4EE77674BC989DC12F6C182C1</string>
<key>dateExpires</key>
<string>2023/1/4</string>
<key>type</key>
<string>Cloud Managed Apple Distribution</string>
</dict>
<key>entitlements</key>
<dict>
<key>application-identifier</key>
<string>46BSGN46R3.com.jjkj.im.im-client-ios</string>
<key>com.apple.developer.team-identifier</key>
<string>46BSGN46R3</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>46BSGN46R3.com.jjkj.im.im-client-ios</string>
</array>
</dict>
<key>name</key>
<string>im-client-ios.app</string>
<key>profile</key>
<dict>
<key>UUID</key>
<string>6ea165b8-027d-4edd-91f4-6c0e86c3d373</string>
<key>dateExpires</key>
<string>2023/1/4</string>
<key>name</key>
<string>iOS Team Ad Hoc Provisioning Profile: com.jjkj.im.im-client-ios</string>
</dict>
<key>team</key>
<dict>
<key>id</key>
<string>46BSGN46R3</string>
<key>name</key>
<string>tao he</string>
</dict>
<key>versionNumber</key>
<string>1.0</string>
</dict>
</array>
</dict>
</plist>

+ 20
- 0
im-client-ios/im-client-ios 2022-01-04 11-08-56/ExportOptions.plist ファイルの表示

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<true/>
<key>destination</key>
<string>export</string>
<key>method</key>
<string>ad-hoc</string>
<key>signingStyle</key>
<string>automatic</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>46BSGN46R3</string>
<key>thinning</key>
<string>iPhone14,5</string>
</dict>
</plist>

+ 2948
- 0
im-client-ios/im-client-ios 2022-01-04 11-08-56/Packaging.log
ファイル差分が大きすぎるため省略します
ファイルの表示


+ 523
- 0
im-client-ios/im-client-ios 2022-01-04 11-08-56/app-thinning.plist ファイルの表示

@@ -0,0 +1,523 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>variants</key>
<dict>
<key>im-client-ios-E1CE033F-EDD1-4252-A036-9FB78E2BB250.ipa</key>
<dict>
<key>limitUncompressedInitialPrefetchedODR</key>
<integer>2147483648</integer>
<key>onDemandResourcesAssetPacks</key>
<dict/>
<key>sizeCompressedApp</key>
<integer>24659</integer>
<key>sizeCompressedAppAndODR</key>
<integer>24659</integer>
<key>sizeCompressedODR</key>
<integer>0</integer>
<key>sizeUncompressedApp</key>
<integer>115671</integer>
<key>sizeUncompressedAppAndODR</key>
<integer>115671</integer>
<key>sizeUncompressedInitialPrefetchedODR</key>
<integer>0</integer>
<key>sizeUncompressedInitialPrefetchedODRExceedsLimit</key>
<false/>
<key>sizeUncompressedODR</key>
<integer>0</integer>
<key>tagsUncompressedInitialPrefetchedODR</key>
<array/>
<key>variantDescriptors</key>
<array>
<dict>
<key>device</key>
<string>iPhone8,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone14,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad6,8</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,7</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone10,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>MacFamily20,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone12,8</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,11</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone14,5</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone10,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,7</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone9,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone13,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone10,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone11,6</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,6</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone14,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad5,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad6,11</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad11,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone12,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad6,7</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad6,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad11,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone9,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad5,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,6</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,11</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad6,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,5</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,10</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,12</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad12,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad11,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone11,8</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,12</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone9,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone12,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,9</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad5,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone13,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad14,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone11,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone12,5</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone13,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone10,5</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone8,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,8</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad6,12</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,8</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,9</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad5,3</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPod9,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone8,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone14,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad11,4</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone10,6</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad11,7</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad12,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,6</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad7,5</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,10</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad13,11</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone9,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone13,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone11,2</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad11,6</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad8,5</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPhone10,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
<dict>
<key>device</key>
<string>iPad14,1</string>
<key>os-version</key>
<string>15.0</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>

バイナリ
im-client-ios/im-client-ios 2022-01-04 11-08-56/im-client-ios-E1CE033F-EDD1-4252-A036-9FB78E2BB250.ipa ファイルの表示


+ 4
- 0
im-client-ios/im-client-ios-Bridging-Header.h ファイルの表示

@@ -0,0 +1,4 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//


+ 17
- 0
im-client-ios/im_client_iosApp.swift ファイルの表示

@@ -0,0 +1,17 @@
//
// im_client_iosApp.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2021/12/27.
//

import SwiftUI

@main
struct im_client_iosApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}

+ 22
- 0
im-client-ios/notifications/AppDelegate.swift ファイルの表示

@@ -0,0 +1,22 @@
//
// AppDelegate.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/2/25.
//

import UIKit
import UserNotifications
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
var window: UIWindow?
}


+ 60
- 0
im-client-ios/notifications/UserNotificationManager.swift ファイルの表示

@@ -0,0 +1,60 @@
//
// UserNotificationManager.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/2/24.
//

import Foundation
import UserNotifications
import CoreLocation

class UserNotificationManager{
static let instance = UserNotificationManager()
func requestAuthorization(){
UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.sound,.badge]) { (success, error) in
if let error = error {
print("something goes wrong,\(error) ")
}else{
print("success")
}
}
}
func sendNotification(title: String!, body: String!){
let content = UNMutableNotificationContent()
content.title = title
content.body = body
content.sound = .default
//5秒之后触发通知
// let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
//17:05触发通知
// var date = DateComponents()
// date.hour = 17 /* 使用24小时制*/
// date.minute = 18
//
// let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: false)
let coordinate = CLLocationCoordinate2D(
latitude: 50,
longitude: 60)
let region = CLCircularRegion(
center: coordinate,
radius: 200,
identifier: "")
region.notifyOnEntry = true
region.notifyOnExit = true
let trigger = UNLocationNotificationTrigger(region: region, repeats: true)
let request = UNNotificationRequest(identifier: "notification", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
}
func removeNotification(){
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
}
}

+ 22
- 0
im-client-ios/notifications/delegate.swift ファイルの表示

@@ -0,0 +1,22 @@
//
// delegate.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/2/24.
//
import UserNotifications

extension AppDelegate:UNUserNotificationCenterDelegate{
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
}
func userNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) {
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
}
}

+ 65
- 0
im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/DistributionSummary.plist ファイルの表示

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>im-client-ios.ipa</key>
<array>
<dict>
<key>architectures</key>
<array>
<string>arm64</string>
</array>
<key>bitcode</key>
<true/>
<key>buildNumber</key>
<string>1</string>
<key>certificate</key>
<dict>
<key>SHA1</key>
<string>BA0E100A84D64D30C69ACAB19CB96D95BB4428B7</string>
<key>dateExpires</key>
<string>2023/3/1</string>
<key>type</key>
<string>Apple Distribution</string>
</dict>
<key>entitlements</key>
<dict>
<key>application-identifier</key>
<string>46BSGN46R3.com.jjkj.im.im-client-ios</string>
<key>beta-reports-active</key>
<true/>
<key>com.apple.developer.team-identifier</key>
<string>46BSGN46R3</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>46BSGN46R3.com.jjkj.im.im-client-ios</string>
</array>
</dict>
<key>name</key>
<string>im-client-ios.app</string>
<key>profile</key>
<dict>
<key>UUID</key>
<string>866bb4b2-d3ab-44f6-80ed-588c8e2e3690</string>
<key>dateExpires</key>
<string>2023/3/1</string>
<key>name</key>
<string>iOS Team Store Provisioning Profile: com.jjkj.im.im-client-ios</string>
</dict>
<key>symbols</key>
<true/>
<key>team</key>
<dict>
<key>id</key>
<string>46BSGN46R3</string>
<key>name</key>
<string>tao he</string>
</dict>
<key>versionNumber</key>
<string>1.0</string>
</dict>
</array>
</dict>
</plist>

+ 22
- 0
im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/ExportOptions.plist ファイルの表示

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>destination</key>
<string>export</string>
<key>manageAppVersionAndBuildNumber</key>
<true/>
<key>method</key>
<string>app-store</string>
<key>signingStyle</key>
<string>automatic</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>46BSGN46R3</string>
<key>uploadBitcode</key>
<true/>
<key>uploadSymbols</key>
<true/>
</dict>
</plist>

+ 141
- 0
im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/Packaging.log ファイルの表示

@@ -0,0 +1,141 @@
2022-03-01 07:41:11 +0000 Initial pipeline context: <IDEDistributionProcessingPipelineContext: 0x2d666f1e0; archive(resolved)="<IDEArchive: 0x2e8611e30>", distributionTask(resolved)="2", distributionDestination(resolved)="1", distributionMethod(resolved)="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team(resolved)="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
Chain (16, self inclusive):
<IDEDistributionProcessingPipelineContext: 0x2d666f1e0; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionProcessingPipelineContext: 0x2d93cbeb0; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2e8106d60; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2db4062b0; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2edf3b200; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2db451af0; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2edf34130; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2db42c850; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2e8120d60; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2f51fc020; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2d9bf7950; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2d5b6be90; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2d5b67940; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="<IDEProvisioningDisambiguatableBasicTeam: 0x2f40a7760; teamID='46BSGN46R3', teamName='tao he', teamType='Individual', username='2583017235@qq.com', isFreeProvisioningTeam='0'>">
<IDEDistributionContext: 0x2db487cf0; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="(null)">
<IDEDistributionContext: 0x2d95a9820; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="<IDEDistributionMethodiOSAppStoreDistribution: 0x306e56370>", team="(null)">
<IDEDistributionContext: 0x306e342c0; archive = "<IDEArchive: 0x2e8611e30>", distributionMethod="(null)", team="(null)">
</IDEDistributionProcessingPipelineContext: 0x2d666f1e0>
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionCreateDestRootStep
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionCopyItemStep
2022-03-01 07:41:11 +0000 Running /usr/bin/ditto '-V' '/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app'
2022-03-01 07:41:11 +0000 >>> Copying /Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app
2022-03-01 07:41:11 +0000 copying file ./_CodeSignature/CodeResources ...
2022-03-01 07:41:11 +0000 2111 bytes for ./_CodeSignature/CodeResources
2022-03-01 07:41:11 +0000 copying file ./im-client-ios ...
2022-03-01 07:41:11 +0000 230224 bytes for ./im-client-ios
2022-03-01 07:41:11 +0000 copying file ./embedded.mobileprovision ...
2022-03-01 07:41:11 +0000 12075 bytes for ./embedded.mobileprovision
2022-03-01 07:41:11 +0000 copying file ./Info.plist ...
2022-03-01 07:41:11 +0000 1219 bytes for ./Info.plist
2022-03-01 07:41:11 +0000 copying file ./PkgInfo ...
2022-03-01 07:41:11 +0000 8 bytes for ./PkgInfo
2022-03-01 07:41:11 +0000 /usr/bin/ditto exited with 0
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionEmbedProfileStep
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionInfoPlistStep
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionItemRemovalStep
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionAppThinningPlistStep
2022-03-01 07:41:11 +0000 Skipping step: IDEDistributionAppThinningPlistStep because it said so
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionCompileBitcodeStep
2022-03-01 07:41:11 +0000 Skipping step: IDEDistributionCompileBitcodeStep because it said so
2022-03-01 07:41:11 +0000 Processing step: IDEDistributionCodeSlimmingStep
2022-03-01 07:41:11 +0000 Running /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bitcode_strip '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app/im-client-ios' '-l' '-keep_cs' '-o' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app/im-client-ios'
2022-03-01 07:41:12 +0000 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bitcode_strip exited with 0
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionCopyBCSymbolMapsStep
2022-03-01 07:41:12 +0000 Running /usr/bin/ditto '-V' '/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/BCSymbolMaps/7F4ABC97-61D4-3CCC-A307-B9C98B81F12D.bcsymbolmap' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/BCSymbolMaps/7F4ABC97-61D4-3CCC-A307-B9C98B81F12D.bcsymbolmap'
2022-03-01 07:41:12 +0000 >>> Copying /Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/BCSymbolMaps/7F4ABC97-61D4-3CCC-A307-B9C98B81F12D.bcsymbolmap
2022-03-01 07:41:12 +0000 copying file ./7F4ABC97-61D4-3CCC-A307-B9C98B81F12D.bcsymbolmap ...
2022-03-01 07:41:12 +0000 12978 bytes for ./7F4ABC97-61D4-3CCC-A307-B9C98B81F12D.bcsymbolmap
2022-03-01 07:41:12 +0000 /usr/bin/ditto exited with 0
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionSymbolsStep
2022-03-01 07:41:12 +0000 Excluding symbols for im-client-ios.app
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionCopyAppleProvidedContentStep
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionAppThinningStep
2022-03-01 07:41:12 +0000 Skipping step: IDEDistributionAppThinningStep because it said so
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionArchThinningStep
2022-03-01 07:41:12 +0000 Running /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app/im-client-ios' '-verify_arch' 'arm64e'
2022-03-01 07:41:12 +0000 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo exited with 1
2022-03-01 07:41:12 +0000 Skipping architecture thinning for item "im-client-ios" because arch "arm64e" wasn't found
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionODRStep
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionStripXattrsStep
2022-03-01 07:41:12 +0000 Running /usr/bin/xattr '-crs' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app'
2022-03-01 07:41:12 +0000 /usr/bin/xattr exited with 0
2022-03-01 07:41:12 +0000 Processing step: IDEDistributionCodesignStep
2022-03-01 07:41:12 +0000 Entitlements for <IDEDistributionItem: 0x2eab8abd0; bundleID='com.jjkj.im.im-client-ios', path='<DVTFilePath:0x2ecb9d3f0:'/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app'>', codeSigningInfo='<_DVTCodeSigningInformation_Path: 0x2e82b1b50; isSigned='1', isAdHocSigned='0', signingCertificate='<DVTSigningCertificate: 0x2cb5d9790; name='Apple Development: 2583017235@qq.com (284H23RQPW)', hash='23805094E291817812A71D3D4814434CA7352395', serialNumber='26FC937950785664134BC56B2526179B', certificateKinds='(
"1.2.840.113635.100.6.1.12",
"1.2.840.113635.100.6.1.2"
), issueDate='2021-12-29 07:51:27 +0000''>', entitlements='{
"application-identifier" = "46BSGN46R3.com.jjkj.im.im-client-ios";
"com.apple.developer.team-identifier" = 46BSGN46R3;
"get-task-allow" = 1;
"keychain-access-groups" = (
"46BSGN46R3.com.jjkj.im.im-client-ios"
);
}', teamID='46BSGN46R3', identifier='com.jjkj.im.im-client-ios', executablePath='<DVTFilePath:0x2e8248f20:'/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app/im-client-ios'>', hardenedRuntime='0'>'>: {
"application-identifier" = "46BSGN46R3.com.jjkj.im.im-client-ios";
"beta-reports-active" = 1;
"com.apple.developer.team-identifier" = 46BSGN46R3;
"get-task-allow" = 0;
"keychain-access-groups" = (
"46BSGN46R3.com.jjkj.im.im-client-ios"
);
}
2022-03-01 07:41:12 +0000 Entitlements for <IDEDistributionItem: 0x2eab8abd0; bundleID='com.jjkj.im.im-client-ios', path='<DVTFilePath:0x2ecb9d3f0:'/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app'>', codeSigningInfo='<_DVTCodeSigningInformation_Path: 0x2e82b1b50; isSigned='1', isAdHocSigned='0', signingCertificate='<DVTSigningCertificate: 0x2ca6be9b0; name='Apple Development: 2583017235@qq.com (284H23RQPW)', hash='23805094E291817812A71D3D4814434CA7352395', serialNumber='26FC937950785664134BC56B2526179B', certificateKinds='(
"1.2.840.113635.100.6.1.12",
"1.2.840.113635.100.6.1.2"
), issueDate='2021-12-29 07:51:27 +0000''>', entitlements='{
"application-identifier" = "46BSGN46R3.com.jjkj.im.im-client-ios";
"com.apple.developer.team-identifier" = 46BSGN46R3;
"get-task-allow" = 1;
"keychain-access-groups" = (
"46BSGN46R3.com.jjkj.im.im-client-ios"
);
}', teamID='46BSGN46R3', identifier='com.jjkj.im.im-client-ios', executablePath='<DVTFilePath:0x2e8248f20:'/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app/im-client-ios'>', hardenedRuntime='0'>'> are: {
"application-identifier" = "46BSGN46R3.com.jjkj.im.im-client-ios";
"beta-reports-active" = 1;
"com.apple.developer.team-identifier" = 46BSGN46R3;
"get-task-allow" = 0;
"keychain-access-groups" = (
"46BSGN46R3.com.jjkj.im.im-client-ios"
);
}
2022-03-01 07:41:12 +0000 Writing entitlements for <IDEDistributionItem: 0x2eab8abd0; bundleID='com.jjkj.im.im-client-ios', path='<DVTFilePath:0x2ecb9d3f0:'/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app'>', codeSigningInfo='<_DVTCodeSigningInformation_Path: 0x2e82b1b50; isSigned='1', isAdHocSigned='0', signingCertificate='<DVTSigningCertificate: 0x2da10bb40; name='Apple Development: 2583017235@qq.com (284H23RQPW)', hash='23805094E291817812A71D3D4814434CA7352395', serialNumber='26FC937950785664134BC56B2526179B', certificateKinds='(
"1.2.840.113635.100.6.1.12",
"1.2.840.113635.100.6.1.2"
), issueDate='2021-12-29 07:51:27 +0000''>', entitlements='{
"application-identifier" = "46BSGN46R3.com.jjkj.im.im-client-ios";
"com.apple.developer.team-identifier" = 46BSGN46R3;
"get-task-allow" = 1;
"keychain-access-groups" = (
"46BSGN46R3.com.jjkj.im.im-client-ios"
);
}', teamID='46BSGN46R3', identifier='com.jjkj.im.im-client-ios', executablePath='<DVTFilePath:0x2e8248f20:'/Users/jjkj/Library/Developer/Xcode/Archives/2022-01-04/im-client-ios 2022-1-4, 11.12 AM.xcarchive/Products/Applications/im-client-ios.app/im-client-ios'>', hardenedRuntime='0'>'> to: /var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/entitlements~~~vLGKOv
2022-03-01 07:41:12 +0000 Running /usr/bin/codesign '-vvv' '--force' '--sign' 'BA0E100A84D64D30C69ACAB19CB96D95BB4428B7' '--entitlements' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/entitlements~~~vLGKOv' '--generate-entitlement-der' '--preserve-metadata=identifier,flags,runtime' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app'
2022-03-01 07:41:12 +0000 /var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app: replacing existing signature
2022-03-01 07:41:18 +0000 /var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app: signed app bundle with Mach-O thin (arm64) [com.jjkj.im.im-client-ios]
2022-03-01 07:41:18 +0000 /usr/bin/codesign exited with 0
2022-03-01 07:41:18 +0000 Processing step: IDEDistributionZipODRItemStep
2022-03-01 07:41:18 +0000 Skipping step: IDEDistributionZipODRItemStep because it said so
2022-03-01 07:41:18 +0000 Processing step: IDEDistributionCreateIPAStep
2022-03-01 07:41:18 +0000 Running /usr/bin/ditto '-V' '-c' '-k' '--norsrc' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root' '/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Packages/im-client-ios.ipa'
2022-03-01 07:41:18 +0000 >>> Copying /var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root
2022-03-01 07:41:18 +0000 copying file ./BCSymbolMaps/7F4ABC97-61D4-3CCC-A307-B9C98B81F12D.bcsymbolmap ...
2022-03-01 07:41:18 +0000 12978 bytes for ./BCSymbolMaps/7F4ABC97-61D4-3CCC-A307-B9C98B81F12D.bcsymbolmap
2022-03-01 07:41:18 +0000 copying file ./Payload/im-client-ios.app/_CodeSignature/CodeResources ...
2022-03-01 07:41:18 +0000 2111 bytes for ./Payload/im-client-ios.app/_CodeSignature/CodeResources
2022-03-01 07:41:18 +0000 copying file ./Payload/im-client-ios.app/im-client-ios ...
2022-03-01 07:41:18 +0000 174448 bytes for ./Payload/im-client-ios.app/im-client-ios
copying file ./Payload/im-client-ios.app/embedded.mobileprovision ...
2022-03-01 07:41:18 +0000 14209 bytes for ./Payload/im-client-ios.app/embedded.mobileprovision
copying file ./Payload/im-client-ios.app/Info.plist ...
2022-03-01 07:41:18 +0000 1219 bytes for ./Payload/im-client-ios.app/Info.plist
copying file ./Payload/im-client-ios.app/PkgInfo ...
2022-03-01 07:41:18 +0000 8 bytes for ./Payload/im-client-ios.app/PkgInfo
2022-03-01 07:41:18 +0000 /usr/bin/ditto exited with 0
2022-03-01 07:41:18 +0000 Processing step: IDEDistributionAppStoreInformationStep
2022-03-01 07:41:18 +0000 Skipping step: IDEDistributionAppStoreInformationStep because it said so
2022-03-01 07:41:18 +0000 Processing step: IDEDistributionGenerateProcessedDistributionItems
2022-03-01 07:41:18 +0000 IDEDistributionItem init <DVTFilePath:0x2d68cb230:'/var/folders/_3/9m9hc1cs5759slcz3j6zqvp80000gn/T/XcodeDistPipeline.~~~f3uXJx/Root/Payload/im-client-ios.app'>
2022-03-01 07:41:18 +0000 Processing step: IDEDistributionCreateManifestStep
2022-03-01 07:41:18 +0000 Skipping step: IDEDistributionCreateManifestStep because it said so

バイナリ
im-client-ios/notifications/im-client-ios 2022-03-01 15-42-11/im-client-ios.ipa ファイルの表示


+ 33
- 0
im-client-ios/sysInfo/SysInfo.swift ファイルの表示

@@ -0,0 +1,33 @@
//
// SysInfo.swift
// ywt-client-ios
//
// Created by 北京居家科技有限公司 on 2022/3/23.
//

import Foundation

struct SysInfo : Encodable {
var versionName: String;
var versionCode: String;
var is_dev: Bool;
var device_key: UUID;
var device_type: String;
var device_model: String;
var device_sys_version: String;
var device_screen_width: Double;
var device_screen_height: Double;
init(versionName: String, versionCode: String, is_dev: Bool, device_key: UUID, device_type: String,
device_model: String, device_sys_version: String, device_screen_width: Double, device_screen_height: Double) {
self.versionName = versionName
self.versionCode = versionCode
self.is_dev = is_dev
self.device_key = device_key
self.device_type = device_type
self.device_model = device_model
self.device_sys_version = device_sys_version
self.device_screen_width = device_screen_width
self.device_screen_height = device_screen_height
}
}

+ 8
- 0
im-client-ios/test/testFile.swift ファイルの表示

@@ -0,0 +1,8 @@
//
// testFile.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/2/16.
//

import SwiftUI

+ 298
- 0
im-client-ios/webview/WebViewUI.swift ファイルの表示

@@ -0,0 +1,298 @@
//
// WebView.swift
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2021/12/30.
//
import WebKit
import Alamofire

import SwiftUI
import UserNotifications
var token: String?;
var uploadUrl: String?;
class WebViewUI: UIViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler,UNUserNotificationCenterDelegate,
UIImagePickerControllerDelegate & UINavigationControllerDelegate {
func getDictionaryFromJSONString(jsonString:String) ->NSDictionary{
let jsonData:Data = jsonString.data(using: .utf8)!
let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers)
if dict != nil {
return dict as! NSDictionary
}
return NSDictionary()
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
//判断消息通道
if(message.name == "photoAlbum"){
print(message.body);
var NSDictionary = getDictionaryFromJSONString(jsonString: message.body as! String);
token = NSDictionary.value(forKey: "token") as! String;
uploadUrl = NSDictionary.value(forKey: "uploadUrl") as! String;
// 相册
openAlbum();
}
if(message.name == "takePhoto"){
// 相机
openCamera();
print(message.body);
}
if(message.name == "scan"){
// 扫一扫
SwiftQRCodeVC();
print(message.body);
}
if(message.name == "fileChoose"){
// UserNotificationManager.instance.sendNotification(title: "何涛", body: "我什么也不知道呀")
// UIApplication.shared.applicationIconBadgeNumber = 1
// openFileSelect();
print("message.body");
print(message.body);
}
if(message.name == "getSysInfo"){
getSysInfo();
}
if(message.name == "sendMessage"){
let NSDictionary = getDictionaryFromJSONString(jsonString: message.body as! String);
let title = NSDictionary.value(forKey: "title") as! String;
let body = NSDictionary.value(forKey: "body") as! String;
UserNotificationManager.instance.sendNotification(title: title, body: body)
UIApplication.shared.applicationIconBadgeNumber = 1
print(message.body);
}
}
// 将进入前台通知
@objc func appWillEnterForeground(){
UIApplication.shared.applicationIconBadgeNumber = 0
print("周期 ---将进入前台通知")
}
//应用程序确实进入了后台
@objc func appDidEnterBackground(){
print("周期 ---应用程序确实进入了后台")
}
var webView:WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration();
// 创建UserContentController(提供JavaScript向webView发送消息的方法)
let userContent = WKUserContentController()
// 添加消息处理,注意:self指代的对象需要遵守WKScriptMessageHandler协议,结束时需要移除
userContent.add(self, name: "photoAlbum");
userContent.add(self, name: "takePhoto");
userContent.add(self, name: "fileChoose");
userContent.add(self, name: "sendMessage");
userContent.add(self, name: "getSysInfo");
userContent.add(self, name: "scan");
// userContent.add(Dsbridge());
// 将UserConttentController设置到配置文件
webConfiguration.userContentController = userContent
webView = WKWebView(frame: .zero, configuration: webConfiguration);
// UI代理
webView.uiDelegate = self;
// 是否允许手势左滑返回上一级, 类似导航控制的左滑返回
webView.allowsBackForwardNavigationGestures = true;
view = webView;
UserNotificationManager.instance.requestAuthorization()
}
override func viewDidLoad() {
super.viewDidLoad()
let timestamp = Date().timeIntervalSince1970
let timeStamp3 = CLongLong(round(timestamp*1000))
let myURL = URL(string:"http://www.jujiaservice.com/jjkj/app/?t=" + "\(timeStamp3)")

let myRequest = URLRequest(url: myURL!)
NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
webView.load(myRequest)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
//当前ViewController销毁前将其移除,否则会造成内存泄漏
self.webView?.configuration.userContentController.removeScriptMessageHandler(forName: "photoAlbum") //移除方法
self.webView?.configuration.userContentController.removeScriptMessageHandler(forName: "takePhoto")
self.webView?.configuration.userContentController.removeScriptMessageHandler(forName: "fileChoose")
self.webView?.configuration.userContentController.removeScriptMessageHandler(forName: "sendMessage")
self.webView?.configuration.userContentController.removeScriptMessageHandler(forName: "scan")
self.webView?.configuration.userContentController.removeScriptMessageHandler(forName: "getSysInfo")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//选择图片成功后代理
@objc func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String :Any]) {
//获取选择的原图
let image = info[UIImagePickerController.InfoKey.originalImage.rawValue]as! UIImage;
if image != nil {
// // 将图片转化成Data
// let imageData = image.jpegData (compressionQuality: 1.0)
// // 将Data转化成 base64的字符串
// let imageBase64String = imageData?.base64EncodedString()
// print(image)
// let s: String = "json.rawString()!";
// self.webView.evaluateJavaScript("taskPathCallBack('" + imageBase64String! + "')") {(data, error) in
//
// }
uploadFile(pickedImage: image);
}
// imageView.image = image
//图片控制器退出
picker.dismiss(animated: true, completion: {
() -> Void in
})
}
func toolsChangeToJson(info: Any) -> String{
//首先判断能不能转换
guard JSONSerialization.isValidJSONObject(info) else {
return ""
}
//如果设置options为JSONSerialization.WritingOptions.prettyPrinted,则打印格式更好阅读
let jsonData = try? JSONSerialization.data(withJSONObject: info, options: [])

if let jsonData = jsonData {
let str = String(data: jsonData, encoding: String.Encoding.utf8)
return str ?? ""
}else {
return ""
}
}
func uploadFile(pickedImage: UIImage) {
var httpHeaders = HTTPHeaders.init();
httpHeaders.add(name: "Auth-Token", value: token ?? "");
let AF = Session.init();
AF.upload(multipartFormData: { (data) in
data.append(pickedImage.jpegData(compressionQuality: 0.6)!, withName: "file",fileName: "\(Date().timeIntervalSince1970).jpg",mimeType: "image/jpeg")
}, to: "http://39.98.219.177:8787"+(uploadUrl ?? ""), headers: httpHeaders)
.responseJSON { response in
// debugPrint(response)
switch response.result {
case let .success(json) :
print(json)
self.webView.evaluateJavaScript("taskPathCallBack('" + self.toolsChangeToJson(info: json) + "')") {(data, error) in

}
fallthrough
default :
print("失败");
}
// print(response.result);
// getJSONStringFromDictionary(dictionary: response.data);
}
}
// 相册相机都要移除到一个新的类里面去-暂时全部写到这里
//打开相册
func openAlbum(){
//判断设置是否支持图片库
if (UIImagePickerController.isSourceTypeAvailable(.photoLibrary)){
//初始化图片控制器
let picker = UIImagePickerController()
//设置代理
picker.delegate = self
//指定图片控制器类型
picker.sourceType = UIImagePickerController.SourceType .photoLibrary
//设置是否允许编辑
// picker.allowsEditing = editSwitch.on
//弹出控制器,显示界面
self.present(picker, animated:true, completion: {
() -> Void in
})
} else {
print("读取相册错误")
}
}
// 打开相机
func openCamera(){
if(UIImagePickerController.isSourceTypeAvailable(.camera)){
//创建图片控制器
let picker = UIImagePickerController()
//设置代理
picker.delegate = self
//设置来源
picker.sourceType = UIImagePickerController.SourceType.camera
//允许编辑
picker.allowsEditing = true
//打开相机
self.present(picker, animated:true, completion: { () -> Void in
})
} else {
debugPrint("找不到相机")
}
}
// 打开文件选择器
func openFileSelect() {
// let importMenu = UIDocumentMenuViewController(documentTypes: [String(kUTTypePDF)], in: .import)
// importMenu.delegate = self
// importMenu.modalPresentationStyle = .formSheet
// self.present(importMenu, animated: true, completion: nil)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let options:UNAuthorizationOptions = [.alert, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: options) { (success, error) in
if let info = error?.localizedDescription {
print(info)
}
}
return true;
}
///请求完成后会调用把获取的deviceToken返回给我们
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
//deviceToken = 32 bytes
print("deviceToken = \(deviceToken)")
let deviceToken = deviceToken.map { String(format: "%02.2hhx", arguments: [$0]) }.joined();
self.webView.evaluateJavaScript("iosDeviceToken('" + deviceToken + "')") {(data, error) in
}
//FIXME:打印推送64位token
print( deviceToken, "推送 deviceToken" )
}
func getSysInfo() {
let infoDictionary = Bundle .main.infoDictionary!
let appVersion = infoDictionary["CFBundleShortVersionString"] as? String
let appDisplayName = infoDictionary[ "CFBundleDisplayName" ] //程序名称
let iosVersion = UIDevice.current.systemVersion //iOS版本
let identifierNumber = UIDevice.current.identifierForVendor //设备udid
let systemName = UIDevice.current.systemName //设备名称
let model = UIDevice.current.model //设备型号
let localizedModel = UIDevice .current.localizedModel //设备区域化型号如A1533
let screenh = UIScreen.main.applicationFrame.size.height
let screenw = UIScreen.main.applicationFrame.size.width
let m = (versionName: appDisplayName, versionCode: appVersion,is_dev: false, device_key: identifierNumber
,device_type: "ios", device_model: model, device_sys_version: model
,device_screen_width: screenw, device_screen_height: screenh);
var sysInfo = SysInfo.init(versionName: appDisplayName as! String, versionCode: appVersion ?? "", is_dev: false, device_key: identifierNumber ?? UUID.init(), device_type: "ios", device_model: model, device_sys_version: model, device_screen_width: screenw, device_screen_height: screenh);

let jsonData = try! JSONEncoder().encode(sysInfo)
let jsonString = String(data: jsonData, encoding: .utf8)
// let data = try? JSONSerialization.data(withJSONObject: sysInfo, options: JSONSerialization.WritingOptions.init(rawValue: 0))
// let jsonStr = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print(jsonString);
self.webView.evaluateJavaScript("getSysInfoCallBack('" + (jsonString ?? "") + "')") {(data, error) in

}
}
}

+ 8
- 0
im-client-ios/对的.m ファイルの表示

@@ -0,0 +1,8 @@
//
// 对的.m
// im-client-ios
//
// Created by 北京居家科技有限公司 on 2022/3/11.
//

#import <Foundation/Foundation.h>

+ 36
- 0
im-client-iosTests/im_client_iosTests.swift ファイルの表示

@@ -0,0 +1,36 @@
//
// im_client_iosTests.swift
// im-client-iosTests
//
// Created by 北京居家科技有限公司 on 2021/12/27.
//

import XCTest
@testable import im_client_ios

class im_client_iosTests: XCTestCase {

override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}

override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}

func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
// Any test you write for XCTest can be annotated as throws and async.
// Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
// Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
}

func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}

}

+ 42
- 0
im-client-iosUITests/im_client_iosUITests.swift ファイルの表示

@@ -0,0 +1,42 @@
//
// im_client_iosUITests.swift
// im-client-iosUITests
//
// Created by 北京居家科技有限公司 on 2021/12/27.
//

import XCTest

class im_client_iosUITests: XCTestCase {

override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.

// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false

// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}

override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}

func testExample() throws {
// UI tests must launch the application that they test.
let app = XCUIApplication()
app.launch()

// Use recording to get started writing UI tests.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}

func testLaunchPerformance() throws {
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
// This measures how long it takes to launch your application.
measure(metrics: [XCTApplicationLaunchMetric()]) {
XCUIApplication().launch()
}
}
}
}

+ 32
- 0
im-client-iosUITests/im_client_iosUITestsLaunchTests.swift ファイルの表示

@@ -0,0 +1,32 @@
//
// im_client_iosUITestsLaunchTests.swift
// im-client-iosUITests
//
// Created by 北京居家科技有限公司 on 2021/12/27.
//

import XCTest

class im_client_iosUITestsLaunchTests: XCTestCase {

override class var runsForEachTargetApplicationUIConfiguration: Bool {
true
}

override func setUpWithError() throws {
continueAfterFailure = false
}

func testLaunch() throws {
let app = XCUIApplication()
app.launch()

// Insert steps here to perform after app launch but before taking a screenshot,
// such as logging into a test account or navigating somewhere in the app

let attachment = XCTAttachment(screenshot: app.screenshot())
attachment.name = "Launch Screen"
attachment.lifetime = .keepAlways
add(attachment)
}
}

+ 5
- 0
ywt-client-ios-Info.plist ファイルの表示

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

+ 1022
- 0
ywt-client-ios.xcodeproj/project.pbxproj
ファイル差分が大きすぎるため省略します
ファイルの表示


+ 7
- 0
ywt-client-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata ファイルの表示

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:/Users/jjkj/Desktop/ywt-client-ios/ywt-client-ios.xcodeproj">
</FileRef>
</Workspace>

+ 8
- 0
ywt-client-ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ファイルの表示

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

+ 5
- 0
ywt-client-ios.xcodeproj/project.xcworkspace/xcuserdata/jjkj.xcuserdatad/IDEFindNavigatorScopes.plist ファイルの表示

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array/>
</plist>

バイナリ
ywt-client-ios.xcodeproj/project.xcworkspace/xcuserdata/jjkj.xcuserdatad/UserInterfaceState.xcuserstate ファイルの表示


+ 98
- 0
ywt-client-ios.xcodeproj/xcshareddata/xcschemes/im-client-ios.xcscheme ファイルの表示

@@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1320"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8427CB6F2779C57800FFEAF8"
BuildableName = "ywt-client-ios.app"
BlueprintName = "ywt-client-ios"
ReferencedContainer = "container:ywt-client-ios.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8427CB7F2779C57B00FFEAF8"
BuildableName = "ywt-client-iosTests.xctest"
BlueprintName = "ywt-client-iosTests"
ReferencedContainer = "container:ywt-client-ios.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8427CB892779C57B00FFEAF8"
BuildableName = "ywt-client-iosUITests.xctest"
BlueprintName = "ywt-client-iosUITests"
ReferencedContainer = "container:ywt-client-ios.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8427CB6F2779C57800FFEAF8"
BuildableName = "ywt-client-ios.app"
BlueprintName = "ywt-client-ios"
ReferencedContainer = "container:ywt-client-ios.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8427CB6F2779C57800FFEAF8"
BuildableName = "ywt-client-ios.app"
BlueprintName = "ywt-client-ios"
ReferencedContainer = "container:ywt-client-ios.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

+ 168
- 0
ywt-client-ios.xcodeproj/xcuserdata/jjkj.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist ファイルの表示

@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "F82B735C-761A-4DF0-A5A8-CF4E40B44C60"
type = "1"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "AE584030-DF90-493C-9BCA-CD97ED5E3C26"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "30"
endingLineNumber = "30"
landmarkName = "userContentController(_:didReceive:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D0767B2E-02D7-443D-BA7D-DC125B517989"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/dsbridge/Dsbridge.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "14"
endingLineNumber = "14"
landmarkName = "testSyn(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "CA18ED35-B323-41F0-AA64-9934CBC4C7E9"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/dsbridge/Dsbridge.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "15"
endingLineNumber = "15"
landmarkName = "testSyn(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7989DB1D-525D-4C81-9C1A-0E3FD9517BD9"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "41"
endingLineNumber = "41"
landmarkName = "userContentController(_:didReceive:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D8AEE067-F97A-4883-BB4C-F115B50D117E"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "38"
endingLineNumber = "38"
landmarkName = "userContentController(_:didReceive:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "2BE0128F-39C8-4BC9-A9B8-D7E512E77602"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "137"
endingLineNumber = "137"
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "B1BBE36C-CFCE-45E4-B14A-F9B07A4C4013"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "181"
endingLineNumber = "181"
landmarkName = "uploadFile(pickedImage:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D29E3808-53AC-467B-A757-2DCC0E4D6186"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "159"
endingLineNumber = "159"
landmarkName = "toolsChangeToJson(info:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "DF10181B-BB0E-46BE-89AA-803D97221195"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "269"
endingLineNumber = "269"
landmarkName = "application(_:didRegisterForRemoteNotificationsWithDeviceToken:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "43FE8478-2C7E-4883-931C-7B218BC12EF7"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "im-client-ios/webview/WebViewUI.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "253"
endingLineNumber = "253"
landmarkName = "application(_:didFinishLaunchingWithOptions:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

+ 32
- 0
ywt-client-ios.xcodeproj/xcuserdata/jjkj.xcuserdatad/xcschemes/xcschememanagement.plist ファイルの表示

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>im-client-ios.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8427CB6F2779C57800FFEAF8</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8427CB7F2779C57B00FFEAF8</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8427CB892779C57B00FFEAF8</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

読み込み中…
キャンセル
保存