Posted at

Fastlane を使ってPush通知のpemファイルの有効期限が切れているアプリの情報をリストで出す

More than 1 year has passed since last update.

表題通りのTIPS。

Fastlaneのソースコードを見れば分かるんだけどドキュメントに載って無くて面倒なのでメモ。


version

Fastlane 2.59.0


lane

これ。


Fastfile.rb

lane :fetch_should_update_pem_apps do

rows = []
index = 0
Spaceship::Portal.login('YOUR_ID', 'YOUR_PW')
Spaceship::Portal.select_team
Spaceship::Portal.app.all.collect do |app|
next if app.details.prod_push_enabled == true
next if app.details.features['push'] == false
p app.details.name
p "> app.details.bundle_id: #{app.details.bundle_id}"
p "> app.details.prod_push_enabled: #{app.details.prod_push_enabled}"
p "> app.details.features[push]: #{app.details.features['push']}"
p '------------'
index += 1
rows << [index, app.details.name, app.details.bundle_id]
end
table = Terminal::Table.new headings: %w[Index Target BI], rows: rows
if rows.count != 0
puts "\n #{table}".red
end
end


説明

app.details.prod_push_enabled はPush通知のCertificateが設定されていないなどであればfalse

app.details.features['push'] はPush通知の設定がONであればtrue。

つまり、 Certificateが設定されていないけどPush設定がされてて、Push通知の送信をしたそうに見えるアプリ一覧が以下の様に出力されます。

 +-------+----------------------------------------------------------------------------+-------------------------------------------------------------------------+

| Index | Target | BI |
+-------+----------------------------------------------------------------------------+-------------------------------------------------------------------------+
| 1 | hogeho hogeh | ffff.f.f..f |
| 2 | hogehoge | your.host
| 3 | aaaaaaa | your domain |


メモ


処理模索方法


spaceship exposes both the Apple Developer Center and the iTunes Connect API.


より、Spaeshipを使えば情報の一括取得が出来る。

必要な処理は、ソースコードとドキュメントを見ながら処理を模索できる。

今回のでいえば、

$ fastlane spaceship 

Username: XXXXXXXXXXXXXXXXXXXx
[1] pry(#<Spaceship::Playground>)> all_apps = Spaceship::Portal.app.all
The current user is in 41 teams. Pass a team ID or call `select_team` to choose a team. Using the first one for now.
=> [#<Spaceship::Portal::App:0x2345524e5768>,
#<Spaceship::Portal::App:0x3fa26ef334fd4>,
...
[2] pry(#<Spaceship::Playground>)> app = Spaceship::Portal.app.find("me.aaaaa.fccccc")

な感じで、 Spaceship::Portal::App のObject1であることが分かる。

で、ドキュメントから安全そうなメソッドを呼びまくる。

すると、ファイル名がついてエラーがでる。

[3] pry(#<Spaceship::Playground>)> app.update_service

ArgumentError: wrong number of arguments (given 0, expected 1)
from /Users/hogehoge/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/fastlane-2.59.0/spaceship/lib/spaceship/portal/app.rb:156:in `update_service'

あとはそのソースコードを見れば何を隠し持ってるかすぐわかる。

この方法でファイル探しまくってるけど、ググった方が早そうであればググっても良いと思います。


Gemfileを利用している場合は

これが必要な場合がある。

gem 'pry'

gem 'rb-readline'





  1. RubyってObjectっていうんでいいんですかね?