2016-11-18 7 views
0

私はIonic.ioプッシュメッセージングを使用するIonicプロジェクトを持っています。これはFastlaneで構築され、HockeyAppを通じて展開されます。Ionic/cordova:fastlaneまたはxcodebuildでプッシュ機能を追加する方法は?

Xcodeの8プッシュ通知にiOSの10

に、もはや仕事をアップグレードしていないので、私はプッシュ資格を含む資格ファイルを持っており、それがRubyスクリプトをXcodeプロジェクトファイルに追加され、https://github.com/fastlane/fastlane/issues/6544

を見ます

私はFastlaneプッシュでプロジェクトをビルドするとまだ動作しません。 Xcodeでプロジェクトファイルを開き、機能セクションを見ると、「エンタイトルメントファイルにプッシュ通知エンタイトルメントを追加」のチェックマークが表示されますが、「プッシュ通知機能をアプリIDに追加する」にエラーが表示されます。

「修正」を押して再構築する場合は、が動作します

だから、私の問題は、次のとおりです。

私はプッシュ機能を得ることができるようにしたい限り、それはコマンドラインからのみだと、私のイオンのプロジェクトを可能として、唯一のFastlane、xcodebuild、ルビーまたは何を使用して、正しく有効きれいに建てる。

答えて

4

だから私は、それは二つのことを実行して作業を取得するために管理:

  • 私はXcodeのからすべての古いプロビジョニング・プロファイルを削除しました。これは問題を逆転させたので、Xcodeはプッシュエンタイトルメントがエンタイトルメントファイルに追加されていないと訴えましたが、「プッシュ通知機能をアプリIDに追加する」にチェックマークがありました。
  • 次へプロジェクトをプロジェクトに組み込むようにスクリプトを変更しました。私はhttps://github.com/Azenetによって、恐らく、これはFastlaneからのマッチを使用しないことに関連していると知らされています。

私は道の90%を得るためのhttps://github.com/Azenethttps://github.com/hjanuschkaのおかげです。

#!/usr/bin/env ruby 
require 'xcodeproj' 

name = ARGV[0] 
projectpath = "../platforms/ios/" + name + ".xcodeproj" 
puts "Adding entitlement push to " + name 
puts "Opening " + projectpath 
proj = Xcodeproj::Project.open(projectpath) 
entitlement_path = name + "/" + name + ".entitlements" 

group_name= proj.root_object.main_group.name 

file = proj.new_file(entitlement_path) 

attributes = {} 
proj.targets.each do |target| 
    attributes[target.uuid] = {"SystemCapabilities" => {"com.apple.Push" => {"enabled" => 1}}} 
    target.add_file_references([file]) 
    puts "Added to target: " + target.uuid 
end 
proj.root_object.attributes['TargetAttributes'] = attributes 

proj.build_configurations.each do |config| 
    config.build_settings.store("CODE_SIGN_ENTITLEMENTS", entitlement_path) 
end 
puts "Added entitlements file path: " + entitlement_path 

proj.save 
関連する問題