app_permission_statistics 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6cf028216ad0a5eb9e5db38cc608dfa4c52ff7df9cd4a3edbbb9e34a1c56af96
4
- data.tar.gz: 0c2556087ea1bae27ddb2f0f175f34f503fff720c9bae41c6810f23cf24f9cb2
3
+ metadata.gz: 1538115d6801db30b90990fe76cceaee1c4c0c83c8577aca52385802d8ba2ae7
4
+ data.tar.gz: 024e5fd5050a2b2be833531f679b30859f637d3868da9c93acdc5de8b3fbc81b
5
5
  SHA512:
6
- metadata.gz: 624c434805872eeb40a78bdea1e743b5c62e71dc30f21577736efa06b2ab7af17c446c664aae43a6c6e8dbf41224fcaba60a9a39229b3e633f1596a56be33e1f
7
- data.tar.gz: 6846d46f81aa9ce88667948dd379c19b3562356811898028fb9f1906fe5d9309caa72468067faba8f6d9dcbcb7352383ca336483a8a3f9a652199fbd41dbf3c2
6
+ metadata.gz: 2aeb917766edc4b1576e226d04bdade076bcc6df271dbb7bb5a97b5c541b35e636fac50b9542365d08e95231b03099644f887741bbac1c2f0a20c56192998ee8
7
+ data.tar.gz: 1647ad46fed27b7565e6a634d0a6b0037870f1449cfe38f6312a5591f251e95ae99986937a5e9f11ce0f3a5ed31a9067eb50e970c796b49a98493f24944fa110
data/Gemfile CHANGED
@@ -7,4 +7,5 @@ gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
9
  gem 'crimp'
10
- gem 'zip'
10
+ gem 'zip-zip'
11
+ gem 'terminal-table'
data/Gemfile.lock CHANGED
@@ -1,23 +1,30 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- app_permission_statistics (0.1.0)
4
+ app_permission_statistics (0.1.1)
5
5
  CFPropertyList (>= 2.3.4, < 3.1.0)
6
6
  crimp
7
+ rubyzip (>= 1.2, < 3.0)
8
+ terminal-table
7
9
  yaml
8
10
 
9
11
  GEM
10
12
  remote: https://rubygems.org/
11
13
  specs:
12
- CFPropertyList (3.0.5)
14
+ CFPropertyList (3.0.6)
13
15
  rexml
14
16
  crimp (1.0.0)
15
17
  deepsort
16
18
  deepsort (0.4.5)
17
19
  rake (13.0.6)
18
- rexml (3.2.4)
19
- yaml (0.1.1)
20
- zip (2.0.2)
20
+ rexml (3.2.5)
21
+ rubyzip (2.3.2)
22
+ terminal-table (3.0.2)
23
+ unicode-display_width (>= 1.1.1, < 3)
24
+ unicode-display_width (2.4.2)
25
+ yaml (0.2.1)
26
+ zip-zip (0.3)
27
+ rubyzip (>= 1.0.0)
21
28
 
22
29
  PLATFORMS
23
30
  x86_64-darwin-21
@@ -27,7 +34,8 @@ DEPENDENCIES
27
34
  bundler (>= 1.12)
28
35
  crimp
29
36
  rake (~> 13.0)
30
- zip
37
+ terminal-table
38
+ zip-zip
31
39
 
32
40
  BUNDLED WITH
33
41
  2.2.3
data/README.md CHANGED
@@ -89,13 +89,19 @@ remove capabilitys :
89
89
  #### 涉及的文件
90
90
 
91
91
  * info.plist
92
- * Runner.entitlements
92
+ * Runner.entitlements
93
+
94
+ Capability被添加后的,保存一些权利( entitlement ) 声明、设置清单
95
+
93
96
  * {embedded/xxx-xx-xx}.mobileprovision
94
- embedded.mobileprovision 存在于IPA包中,被发送到Appstore,真正安装的app 却没有这个文件
95
- xxx-xx-xx.mobileprovision 在打包成IPA前用于工程签名的描述文件
97
+
98
+ embedded.mobileprovision 存在于IPA包中,被发送到Appstore,真正安装的app 却没有这个文件
99
+
100
+ xxx-xx-xx.mobileprovision 在打包成IPA前用于工程签名的描述文件
96
101
  两者基本一致,包括里面的Entitlements字段, 保存一些 Capabilitys被添加后的 声明、设置
97
102
  * Runner.xcodeproj
98
- 工程文件SystemCapabilities字段包含了一些Capabilitys声明
103
+
104
+ 工程文件SystemCapabilities字段包含了一些Capabilitys 的开关字段
99
105
 
100
106
 
101
107
  #### 文件说明:
@@ -30,6 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.add_runtime_dependency "crimp"
31
31
  spec.add_dependency 'CFPropertyList', '< 3.1.0', '>= 2.3.4'
32
32
  spec.add_development_dependency 'bundler', '>= 1.12'
33
+ spec.add_dependency 'rubyzip', '>= 1.2', '< 3.0'
34
+ spec.add_dependency 'terminal-table'
33
35
 
34
36
  # Uncomment to register a new dependency of your gem
35
37
  # spec.add_dependency "example-gem", "~> 1.0"
@@ -3,6 +3,7 @@
3
3
  require_relative "helper"
4
4
  require 'fileutils'
5
5
  require 'yaml'
6
+ require 'terminal-table'
6
7
 
7
8
  module AppPermissionStatistics
8
9
 
@@ -19,19 +20,21 @@ module AppPermissionStatistics
19
20
  @store_path = store_path
20
21
  end
21
22
 
22
- def analyze
23
- load_version
24
- return singleGenerate unless @versions.length > 1
25
- pre_version = @versions[1]
26
- cur_version = @versions[0]
27
- pre_entitlements = load_entitlements_yaml(pre_version)
28
- cur_entitlements = load_entitlements_yaml(cur_version)
23
+ def analyze(versions=[])
24
+ versions.sort{|x,y| y<=>x } unless versions.size < 2
25
+ if versions.length < 2
26
+ load_version
27
+ return singleGenerate unless @versions.length > 1
28
+ else
29
+ @versions = versions
30
+ end
31
+ pre_entitlements = load_entitlements_yaml(@versions[1])
32
+ cur_entitlements = load_entitlements_yaml(@versions[0])
29
33
  return "" unless pre_entitlements.any?
30
34
  return "" unless cur_entitlements.any?
31
35
 
32
- capabilities_diff = analyze_capabilities_diff(pre_entitlements,cur_entitlements)
33
- usage_descs_diff = analyze_usage_descs_diff(pre_entitlements,cur_entitlements);
34
- report_path = generate(capabilities_diff,usage_descs_diff)
36
+ capabilities_diff = analyze_diff(pre_entitlements,cur_entitlements)
37
+ report_path = generate(capabilities_diff)
35
38
  report_path
36
39
  end
37
40
 
@@ -49,23 +52,19 @@ module AppPermissionStatistics
49
52
  end
50
53
 
51
54
 
52
- def generate(capabilities_diff,usage_descs_diff)
55
+ def generate(capabilities_diff)
53
56
  return unless @versions.length > 1
54
57
  cur_version = @versions[0]
55
58
  pre_version = @versions[1]
56
-
57
- output = "\n" + "compared #{cur_version} #{pre_version}"
59
+ output = ""
58
60
  output += "\n" + capabilities_diff unless capabilities_diff.empty?
59
- output += "\n" + usage_descs_diff unless usage_descs_diff.empty?
60
- output += "\n\nThere is no difference between the two versions \n\n" unless (!capabilities_diff.empty? || !usage_descs_diff.empty?)
61
+ output += "\n\nThere is no difference between the two versions 【 #{@versions[0]} vs #{@versions[1]}】\n\n" unless !capabilities_diff.empty?
61
62
  puts output
62
- puts "----------------------------------------"
63
63
  output += "\n\n\n#{cur_version} entitlements list: "
64
64
  output += "\n" + read_each_line(cur_version)
65
65
  output += "\n" + "----------------------------------------"
66
66
  output += "\n\n#{pre_version} entitlements list: "
67
67
  output += "\n" + read_each_line(pre_version)
68
- output += "\n" + "----------------------------------------"
69
68
 
70
69
  report_path = report_file_name(path: @report_path)
71
70
  File.open(report_path, 'w') { |file|
@@ -101,120 +100,98 @@ module AppPermissionStatistics
101
100
  yaml_content
102
101
  end
103
102
 
104
- def analyze_capabilities_diff(pre,cur)
103
+ def analyze_diff(pre,cur)
105
104
  output = ""
106
105
  cur_capabilities_summary = cur['Capabilities_Summary']
107
106
  pre_capabilities_summary = pre['Capabilities_Summary']
108
- cur_capabilities = cur['Capabilities']
109
- pre_capabilities = pre['Capabilities']
110
- output = ""
107
+
108
+ cur_usage_descs_summary = cur['PermissionsUsageDescription_Summary']
109
+ pre_usage_descs_summary = pre['PermissionsUsageDescription_Summary']
110
+
111
+ # cur_capabilities = cur['Capabilities']
112
+ # pre_capabilities = pre['Capabilities']
113
+
114
+ # cur_usage_descs = cur['PermissionsUsageDescription']
115
+ # pre_usage_descs = pre['PermissionsUsageDescription']
116
+
111
117
  # 修改
112
118
  comm_capabilities = cur_capabilities_summary.keys & pre_capabilities_summary.keys
113
- modifys = modifys_cur = modifys_pre = ""
119
+ modifyed_rows = []
114
120
  comm_capabilities.each do |key|
115
121
  if cur_capabilities_summary[key] != pre_capabilities_summary[key]
116
- modifys_cur += "\n" + '- ' + key + ': ' + cur_capabilities[key].to_s
117
- modifys_pre += "\n" + '- ' + key + ': ' + pre_capabilities[key].to_s
122
+ modifyed_rows << [ '- ' + key ]
118
123
  end
119
124
  end
120
125
 
121
- modifys += "\n" + @versions[0] unless modifys_cur.empty?
122
- modifys += modifys_cur unless modifys_cur.empty?
123
- modifys += "\n" + @versions[1] unless modifys_pre.empty?
124
- modifys += modifys_pre unless modifys_pre.empty?
125
-
126
- #新增
127
- add_capabilities = cur_capabilities_summary.keys - pre_capabilities_summary.keys
128
- adds = ""
129
- add_capabilities.each do |key|
130
- adds += "\n" + '- ' + key + ': ' + cur_capabilities[key].to_s
131
- end
132
-
133
- #移除
134
- remove_capabilities = pre_capabilities_summary.keys - cur_capabilities_summary.keys
135
- removes = ""
136
- remove_capabilities.each do |key|
137
- removes += "\n" + '- ' + key + ': ' + pre_capabilities[key].to_s
138
- end
139
-
140
- if !modifys.empty?
141
- output += "\n" + "modify capabilitys : "
142
- output += modifys
143
- output += "\n------------------------------"
144
- end
145
-
146
- if !adds.empty?
147
- output += "\n" + "add capabilitys : "
148
- output += adds
149
- output += "\n------------------------------"
150
- end
151
-
152
- if !removes.empty?
153
- output += "\n" + "remove capabilitys : "
154
- output += removes
155
- output += "\n------------------------------"
156
- end
157
-
158
- output
159
- end
160
-
161
- def analyze_usage_descs_diff(pre,cur)
162
- output = ""
163
- cur_usage_descs_summary = cur['PermissionsUsageDescription_Summary']
164
- pre_usage_descs_summary = pre['PermissionsUsageDescription_Summary']
165
-
166
- cur_usage_descs = cur['PermissionsUsageDescription']
167
- pre_usage_descs = pre['PermissionsUsageDescription']
168
-
169
- # 修改
170
126
  comm_usage_descs = cur_usage_descs_summary.keys & pre_usage_descs_summary.keys
171
- modifys = modifys_cur = modifys_pre = ""
172
127
  comm_usage_descs.each do |key|
173
128
  if cur_usage_descs_summary[key] != pre_usage_descs_summary[key]
174
- modifys_cur += "\n" + '- ' + key + ': ' + cur_usage_descs[key].to_s
175
- modifys_pre += "\n" + '- ' + key + ': ' + pre_usage_descs[key].to_s
129
+ modifyed_rows << [ '- ' + key ]
176
130
  end
177
131
  end
178
132
 
179
- modifys += "\n" + @versions[0] unless modifys_cur.empty?
180
- modifys += modifys_cur unless modifys_cur.empty?
181
- modifys += "\n" + @versions[1] unless modifys_pre.empty?
182
- modifys += modifys_pre unless modifys_pre.empty?
183
133
 
184
134
  #新增
135
+ add_capabilities = cur_capabilities_summary.keys - pre_capabilities_summary.keys
136
+ added_rows = []
137
+ add_capabilities.each do |key|
138
+ added_rows << ['- ' + key ] #+ ': ' + cur_capabilities[key].to_s
139
+ end
140
+
185
141
  add_usage_descs = cur_usage_descs_summary.keys - pre_usage_descs_summary.keys
186
- adds = ""
187
142
  add_usage_descs.each do |key|
188
- adds += "\n" + '- ' + key + ': ' + cur_usage_descs[key].to_s
143
+ added_rows << [ '- ' + key ] #+ ': ' + cur_usage_descs[key].to_s
189
144
  end
190
145
 
191
146
  #移除
147
+ remove_capabilities = pre_capabilities_summary.keys - cur_capabilities_summary.keys
148
+ removed_rows = []
149
+ remove_capabilities.each do |key|
150
+ removed_rows << ['- ' + key ] #+ ': ' + pre_capabilities[key].to_s
151
+ end
152
+
192
153
  remove_usage_descs = pre_usage_descs_summary.keys - cur_usage_descs_summary.keys
193
- removes = ""
194
154
  remove_usage_descs.each do |key|
195
- removes += "\n" + '- ' + key + ': ' + pre_usage_descs[key].to_s
155
+ removed_rows << [ '- ' + key ] #+ ': ' + pre_usage_descs[key].to_s
196
156
  end
197
157
 
198
- if !modifys.empty?
199
- output += "\n" + "modify permissions usage description : "
200
- output += modifys
201
- output += "\n------------------------------"
158
+ # Summary
159
+ max_count = [modifyed_rows.size,added_rows.size,removed_rows.size].max
160
+ if max_count == 0
161
+ return output
202
162
  end
203
163
 
204
- if !adds.empty?
205
- output += "\n" + "add permissions usage description : "
206
- output += adds
207
- output += "\n------------------------------"
164
+ table = Terminal::Table.new do |t|
165
+ t.title = "Compared #{@versions[0]} to #{@versions[1]} Summary"
166
+ t.add_row ["Modifyed", modifyed_rows.size ]
167
+ t.add_row ["New", added_rows.size ]
168
+ t.add_row ["Remove", removed_rows.size ]
208
169
  end
170
+ output += table.to_s + "\n\n"
209
171
 
210
- if !removes.empty?
211
- output += "\n" + "remove permissions usage description : "
212
- output += removes
213
- output += "\n------------------------------"
172
+ def get_value(arr,n)
173
+ return "" unless arr.length > n
174
+ return arr[n].first unless arr.length == 0
175
+ return ""
214
176
  end
215
177
 
178
+ detail_table = Terminal::Table.new do |t|
179
+ t.headings = ['Modifyed', 'New', 'Remove']
180
+ (0..max_count-1).each do |n|
181
+ t.add_row [
182
+ get_value(modifyed_rows,n),
183
+ get_value(added_rows,n),
184
+ get_value(removed_rows,n),
185
+ ]
186
+ end
187
+ end
188
+ output += detail_table.to_s + "\n\n"
216
189
  output
217
- end
190
+ end
191
+
218
192
  end
219
193
 
220
- end
194
+ end
195
+
196
+ # obj = AppPermissionStatistics::Analyzer.new('com.ola.chat')
197
+ # obj.analyze(["5.3.0","5.1.0"])
@@ -58,7 +58,8 @@ module AppPermissionStatistics
58
58
  end
59
59
  version = plistInfo.version
60
60
  if !yaml_content.include?(version)
61
- yaml_content.unshift(version)
61
+ yaml_content.push(version)
62
+ yaml_content.sort{|x,y| y<=>x } unless yaml_content.size < 2
62
63
  File.open(yaml_name, "w") { |file| file.write(yaml_content.to_yaml) }
63
64
  end
64
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppPermissionStatistics
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
@@ -30,7 +30,7 @@ module AppPermissionStatistics
30
30
  end
31
31
  compare_extracter.extract_update
32
32
  extracter.extract_update
33
- analyzer.analyze
33
+ analyzer.analyze([extracter.plistInfo.version,compare_extracter.plistInfo.version])
34
34
  extracter.clear!
35
35
  compare_extracter.clear!
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_permission_statistics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - bin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-03 00:00:00.000000000 Z
11
+ date: 2023-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yaml
@@ -72,6 +72,40 @@ dependencies:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '1.12'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubyzip
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '1.2'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '3.0'
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '1.2'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: terminal-table
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
75
109
  description: app permission statistics from ipas
76
110
  email:
77
111
  - tang.bin@olaola.chat
@@ -86,7 +120,6 @@ files:
86
120
  - Gemfile.lock
87
121
  - README.md
88
122
  - Rakefile
89
- - analyze_report
90
123
  - app_permission_statistics.gemspec
91
124
  - bin/app_permission_statistics
92
125
  - bin/setup
data/analyze_report DELETED
@@ -1,481 +0,0 @@
1
-
2
- compared 5.3.0 5.2.0
3
-
4
- add capabilitys :
5
- - ClassKit: {"com.apple.developer.ClassKit-environment"=>"development"}
6
- - MDM Managed Associated Domains: {"com.apple.developer.associated-domains.mdm-managed"=>true}
7
- - AutoFill Credential Provider: {"com.apple.developer.authentication-services.autofill-credential-provider"=>true}
8
- - Data Protection: {"com.apple.developer.default-data-protection"=>"NSFileProtectionComplete"}
9
- - App Attest: {"com.apple.developer.devicecheck.appattest-environment"=>"development"}
10
- - Game Center: {"com.apple.developer.game-center"=>true}
11
- - HealthKit: {"com.apple.developer.healthkit"=>true, "com.apple.developer.healthkit.access"=>["health-records"]}
12
- - HomeKit: {"com.apple.developer.homekit"=>true}
13
- - iCloud: {"com.apple.developer.icloud-services"=>["CloudKit"], "com.apple.developer.icloud-container-identifiers"=>[]}
14
- - Apple Pay: {"com.apple.developer.in-app-payments"=>["merchant.xxxx"]}
15
- - Extended Virtual Address Space: {"com.apple.developer.kernel.extended-virtual-addressing"=>true}
16
- - Hotspot: {"com.apple.developer.networking.HotspotConfiguration"=>true}
17
- - Multipath: {"com.apple.developer.networking.multipath"=>true}
18
- - Network Extensions: {"com.apple.developer.networking.networkextension"=>["app-proxy-provider"]}
19
- - Personal VPN: {"com.apple.developer.networking.vpn.api"=>["allow-vpn"]}
20
- - Access WiFi Information: {"com.apple.developer.networking.wifi-info"=>true}
21
- - NFC Tag Reading: {"com.apple.developer.nfc.readersession.formats"=>["TAG"]}
22
- - Wallet: {"com.apple.developer.pass-type-identifiers"=>["$(TeamIdentifierPrefix)*"]}
23
- - SiriKit: {"com.apple.developer.siri"=>true}
24
- - Fonts: {"com.apple.developer.user-fonts"=>["system-installation"]}
25
- - Wireless Accessory Configuration: {"com.apple.external-accessory.wireless-configuration"=>true}
26
- - Inter-App Audio: {"inter-app-audio"=>true}
27
- - Keychain sharing: {"keychain-access-groups"=>["$(AppIdentifierPrefix)com.ola.chat"]}
28
- ------------------------------
29
-
30
-
31
- 5.3.0 entitlements list:
32
-
33
- ---
34
-
35
- Capabilities_Summary:
36
-
37
- In-App Purchase: 6413cfeb7a89f7e0a8872f82b919c0d9
38
-
39
- Push Notifications: 3250c7ff60c20cfc4aaf7f6791f621df
40
-
41
- ClassKit: 0ab2c8bb2a021beda00a0d4e6a65093a
42
-
43
- Sign In with Apple: 6642376617933be4ae31b129fe403e45
44
-
45
- Associated Domains: fa57cad0e93096199dfdefff0b6e8b92
46
-
47
- MDM Managed Associated Domains: d479f7996a4c3f82893b79d2361311f1
48
-
49
- AutoFill Credential Provider: 316f5abc6e0273338046ebb32ed076db
50
-
51
- Data Protection: b94eb6e40823b5c674de4ad4dd1c9734
52
-
53
- App Attest: 3e66df09c974344e2c16c3e875ade176
54
-
55
- Game Center: dd324a9aec2a55ca5573f5cb810b58e8
56
-
57
- HealthKit: 94ab8d6e039b1c6b135cf70e0fa9240d
58
-
59
- HomeKit: 68dfbc37633b4583a3c2ec50dc1c59c6
60
-
61
- iCloud: 2f650c9ade273e460d54789666112ae8
62
-
63
- Apple Pay: 2187796935490abf56a2ba4b93da459c
64
-
65
- Extended Virtual Address Space: f88e975f4f6b323f956df612ca056eec
66
-
67
- Hotspot: ee58dbfd5c0acc611961dc56f8219ddf
68
-
69
- Multipath: 659f7b23b5dcbb1044502b01eac16dbd
70
-
71
- Network Extensions: ce506e239bec78bd2ba9b26550fd4c4d
72
-
73
- Personal VPN: ee79bdeedc8217160a331bc326034774
74
-
75
- Access WiFi Information: e98b72e88cbd24b0639b7f9e684e0d8c
76
-
77
- NFC Tag Reading: 60016cce4b8845b0f777a731f06c2ef1
78
-
79
- Wallet: fefc7cf9c4f7b017d060ca5561215c9c
80
-
81
- SiriKit: ce40d86d84b2e46b4158ba77c3170f12
82
-
83
- Fonts: bfcebec5a589a962d019ef3a2755f1c8
84
-
85
- Wireless Accessory Configuration: d9ce63e447005bf4a4c936e718597637
86
-
87
- App Groups: 0b5c02cd472237b540efda80297cbe79
88
-
89
- Inter-App Audio: 7abecaa3b35ccaf065573d44a34fc67c
90
-
91
- Keychain sharing: e86942b735901fee337fc5f4a57401e3
92
-
93
- BackgroundModes: d741c9bb5ce83f8ac40d365ae4a92c5b
94
-
95
- DisableMinimumFrameDurationOnPhone: 00c4662d62ca111b7a420649beaf5bf7
96
-
97
- RequiredDeviceCapabilities: ce80d3d730b0bea7ffd2bfc2f2d8f4a4
98
-
99
- AppTransportSecurity: 931810d61eb28fc7e1b358fb592e7ecc
100
-
101
- Capabilities:
102
-
103
- In-App Purchase: true
104
-
105
- Push Notifications:
106
-
107
- aps-environment: development
108
-
109
- ClassKit:
110
-
111
- com.apple.developer.ClassKit-environment: development
112
-
113
- Sign In with Apple:
114
-
115
- com.apple.developer.applesignin:
116
-
117
- - Default
118
-
119
- Associated Domains:
120
-
121
- com.apple.developer.associated-domains:
122
-
123
- - applinks:partyhub.onelink.me
124
-
125
- - applinks:partying-ios-alternate.app.link
126
-
127
- - applinks:partying-ios.app.link
128
-
129
- MDM Managed Associated Domains:
130
-
131
- com.apple.developer.associated-domains.mdm-managed: true
132
-
133
- AutoFill Credential Provider:
134
-
135
- com.apple.developer.authentication-services.autofill-credential-provider: true
136
-
137
- Data Protection:
138
-
139
- com.apple.developer.default-data-protection: NSFileProtectionComplete
140
-
141
- App Attest:
142
-
143
- com.apple.developer.devicecheck.appattest-environment: development
144
-
145
- Game Center:
146
-
147
- com.apple.developer.game-center: true
148
-
149
- HealthKit:
150
-
151
- com.apple.developer.healthkit: true
152
-
153
- com.apple.developer.healthkit.access:
154
-
155
- - health-records
156
-
157
- HomeKit:
158
-
159
- com.apple.developer.homekit: true
160
-
161
- iCloud:
162
-
163
- com.apple.developer.icloud-services:
164
-
165
- - CloudKit
166
-
167
- com.apple.developer.icloud-container-identifiers: []
168
-
169
- Apple Pay:
170
-
171
- com.apple.developer.in-app-payments:
172
-
173
- - merchant.xxxx
174
-
175
- Extended Virtual Address Space:
176
-
177
- com.apple.developer.kernel.extended-virtual-addressing: true
178
-
179
- Hotspot:
180
-
181
- com.apple.developer.networking.HotspotConfiguration: true
182
-
183
- Multipath:
184
-
185
- com.apple.developer.networking.multipath: true
186
-
187
- Network Extensions:
188
-
189
- com.apple.developer.networking.networkextension:
190
-
191
- - app-proxy-provider
192
-
193
- Personal VPN:
194
-
195
- com.apple.developer.networking.vpn.api:
196
-
197
- - allow-vpn
198
-
199
- Access WiFi Information:
200
-
201
- com.apple.developer.networking.wifi-info: true
202
-
203
- NFC Tag Reading:
204
-
205
- com.apple.developer.nfc.readersession.formats:
206
-
207
- - TAG
208
-
209
- Wallet:
210
-
211
- com.apple.developer.pass-type-identifiers:
212
-
213
- - "$(TeamIdentifierPrefix)*"
214
-
215
- SiriKit:
216
-
217
- com.apple.developer.siri: true
218
-
219
- Fonts:
220
-
221
- com.apple.developer.user-fonts:
222
-
223
- - system-installation
224
-
225
- Wireless Accessory Configuration:
226
-
227
- com.apple.external-accessory.wireless-configuration: true
228
-
229
- App Groups:
230
-
231
- com.apple.security.application-groups:
232
-
233
- - group.com.ola.chat.app
234
-
235
- - group.com.ola.chat
236
-
237
- Inter-App Audio:
238
-
239
- inter-app-audio: true
240
-
241
- Keychain sharing:
242
-
243
- keychain-access-groups:
244
-
245
- - "$(AppIdentifierPrefix)com.ola.chat"
246
-
247
- BackgroundModes:
248
-
249
- UIBackgroundModes:
250
-
251
- - audio
252
-
253
- - remote-notification
254
-
255
- DisableMinimumFrameDurationOnPhone:
256
-
257
- CADisableMinimumFrameDurationOnPhone: true
258
-
259
- RequiredDeviceCapabilities:
260
-
261
- UIRequiredDeviceCapabilities:
262
-
263
- - arm64
264
-
265
- AppTransportSecurity:
266
-
267
- NSAppTransportSecurity:
268
-
269
- NSAllowsArbitraryLoads: true
270
-
271
- PermissionsUsageDescription_Summary:
272
-
273
- NSLocationAlwaysUsageDescription: 4277cee74bdb7e834578f98269d61c83
274
-
275
- NSCameraUsageDescription: bbeb85d0f3fd621d9714ffa815e13c3b
276
-
277
- NSUserTrackingUsageDescription: 12cb2c4dff6b2542557e4c63788abe32
278
-
279
- NSLocalNetworkUsageDescription: 25e593f988484c58666bc7e433939d15
280
-
281
- NSAppleMusicUsageDescription: 374bb55b8c4d5af37fca0d78ccdbd01c
282
-
283
- NSLocationUsageDescription: 4277cee74bdb7e834578f98269d61c83
284
-
285
- NSMicrophoneUsageDescription: f872cbada940e9081aeb4119d2b33cda
286
-
287
- NSLocationWhenInUseUsageDescription: 4277cee74bdb7e834578f98269d61c83
288
-
289
- NSFaceIDUsageDescription: ac6a6855c7284a2abf6c2c2c443eb9b8
290
-
291
- NSContactsUsageDescription: 134bc1e1ab2794bbe4211aa8e01df7ed
292
-
293
- NSPhotoLibraryUsageDescription: adb704f39c8b7b5f80946ac67b238274
294
-
295
- PermissionsUsageDescription:
296
-
297
- NSLocationAlwaysUsageDescription: Access to your location is required to provide
298
-
299
- results near your area and find friends around you
300
-
301
- NSCameraUsageDescription: Access to your camera is required to take photos or videos
302
-
303
- in Partying.
304
-
305
- NSUserTrackingUsageDescription: 拒绝Partying将无法精准推送您喜欢的内容。
306
-
307
- NSLocalNetworkUsageDescription: Allow Flutter tools on your computer to connect
308
-
309
- and debug your application. This prompt will not appear on release builds.
310
-
311
- NSAppleMusicUsageDescription: Access to your Apple Music is required to share music
312
-
313
- files in Partying.
314
-
315
- NSLocationUsageDescription: Access to your location is required to provide results
316
-
317
- near your area and find friends around you
318
-
319
- NSMicrophoneUsageDescription: Access to your microphone is required to join voice
320
-
321
- chatroom, send voice message or make voice calls.
322
-
323
- NSLocationWhenInUseUsageDescription: Access to your location is required to provide
324
-
325
- results near your area and find friends around you
326
-
327
- NSFaceIDUsageDescription: Turn on FaceID service to use FaceID to log in.
328
-
329
- NSContactsUsageDescription: 若不允许,你将无法在伴伴中发现手机通讯录好友
330
-
331
- NSPhotoLibraryUsageDescription: Access to your photo library is required to share
332
-
333
- photos and save ones in Partying.
334
-
335
- ----------------------------------------
336
-
337
- 5.2.0 entitlements list:
338
-
339
- ---
340
-
341
- Capabilities_Summary:
342
-
343
- In-App Purchase: 6413cfeb7a89f7e0a8872f82b919c0d9
344
-
345
- Push Notifications: 3250c7ff60c20cfc4aaf7f6791f621df
346
-
347
- Sign In with Apple: 6642376617933be4ae31b129fe403e45
348
-
349
- Associated Domains: fa57cad0e93096199dfdefff0b6e8b92
350
-
351
- App Groups: 0b5c02cd472237b540efda80297cbe79
352
-
353
- BackgroundModes: d741c9bb5ce83f8ac40d365ae4a92c5b
354
-
355
- DisableMinimumFrameDurationOnPhone: 00c4662d62ca111b7a420649beaf5bf7
356
-
357
- RequiredDeviceCapabilities: ce80d3d730b0bea7ffd2bfc2f2d8f4a4
358
-
359
- AppTransportSecurity: 931810d61eb28fc7e1b358fb592e7ecc
360
-
361
- Capabilities:
362
-
363
- In-App Purchase: true
364
-
365
- Push Notifications:
366
-
367
- aps-environment: development
368
-
369
- Sign In with Apple:
370
-
371
- com.apple.developer.applesignin:
372
-
373
- - Default
374
-
375
- Associated Domains:
376
-
377
- com.apple.developer.associated-domains:
378
-
379
- - applinks:partyhub.onelink.me
380
-
381
- - applinks:partying-ios-alternate.app.link
382
-
383
- - applinks:partying-ios.app.link
384
-
385
- App Groups:
386
-
387
- com.apple.security.application-groups:
388
-
389
- - group.com.ola.chat.app
390
-
391
- - group.com.ola.chat
392
-
393
- BackgroundModes:
394
-
395
- UIBackgroundModes:
396
-
397
- - audio
398
-
399
- - remote-notification
400
-
401
- DisableMinimumFrameDurationOnPhone:
402
-
403
- CADisableMinimumFrameDurationOnPhone: true
404
-
405
- RequiredDeviceCapabilities:
406
-
407
- UIRequiredDeviceCapabilities:
408
-
409
- - arm64
410
-
411
- AppTransportSecurity:
412
-
413
- NSAppTransportSecurity:
414
-
415
- NSAllowsArbitraryLoads: true
416
-
417
- PermissionsUsageDescription_Summary:
418
-
419
- NSLocationAlwaysUsageDescription: 4277cee74bdb7e834578f98269d61c83
420
-
421
- NSCameraUsageDescription: bbeb85d0f3fd621d9714ffa815e13c3b
422
-
423
- NSUserTrackingUsageDescription: 12cb2c4dff6b2542557e4c63788abe32
424
-
425
- NSLocalNetworkUsageDescription: 25e593f988484c58666bc7e433939d15
426
-
427
- NSAppleMusicUsageDescription: 374bb55b8c4d5af37fca0d78ccdbd01c
428
-
429
- NSLocationUsageDescription: 4277cee74bdb7e834578f98269d61c83
430
-
431
- NSMicrophoneUsageDescription: f872cbada940e9081aeb4119d2b33cda
432
-
433
- NSLocationWhenInUseUsageDescription: 4277cee74bdb7e834578f98269d61c83
434
-
435
- NSFaceIDUsageDescription: ac6a6855c7284a2abf6c2c2c443eb9b8
436
-
437
- NSContactsUsageDescription: 134bc1e1ab2794bbe4211aa8e01df7ed
438
-
439
- NSPhotoLibraryUsageDescription: adb704f39c8b7b5f80946ac67b238274
440
-
441
- PermissionsUsageDescription:
442
-
443
- NSLocationAlwaysUsageDescription: Access to your location is required to provide
444
-
445
- results near your area and find friends around you
446
-
447
- NSCameraUsageDescription: Access to your camera is required to take photos or videos
448
-
449
- in Partying.
450
-
451
- NSUserTrackingUsageDescription: 拒绝Partying将无法精准推送您喜欢的内容。
452
-
453
- NSLocalNetworkUsageDescription: Allow Flutter tools on your computer to connect
454
-
455
- and debug your application. This prompt will not appear on release builds.
456
-
457
- NSAppleMusicUsageDescription: Access to your Apple Music is required to share music
458
-
459
- files in Partying.
460
-
461
- NSLocationUsageDescription: Access to your location is required to provide results
462
-
463
- near your area and find friends around you
464
-
465
- NSMicrophoneUsageDescription: Access to your microphone is required to join voice
466
-
467
- chatroom, send voice message or make voice calls.
468
-
469
- NSLocationWhenInUseUsageDescription: Access to your location is required to provide
470
-
471
- results near your area and find friends around you
472
-
473
- NSFaceIDUsageDescription: Turn on FaceID service to use FaceID to log in.
474
-
475
- NSContactsUsageDescription: 若不允许,你将无法在伴伴中发现手机通讯录好友
476
-
477
- NSPhotoLibraryUsageDescription: Access to your photo library is required to share
478
-
479
- photos and save ones in Partying.
480
-
481
- ----------------------------------------