无法使用cordova-plugin-fcm插件向iOS制作添加推送通知权利

问题描述:

我试图在使用Visual Studio 2017的空白Cordova应用程序中安装cordova-plugin-fcm插件。 我安装插件并添加google- plist文件等 在我的Mac上我有xcode 7.2.1。无法使用cordova-plugin-fcm插件向iOS制作添加推送通知权利

当我从visual studio构建一个ipa时,它会生成一个IPA,但它没有启用推送通知。 我已将所有源代码(包括插件文件夹)添加到bitbucket。下方链接; https://bitbucket.org/quintonn/pushnotificationtest

我缺少什么让我的iphone上启用推送通知?仅供参考,我可以很容易地在android上获得它。

我不想打开xcode来启用推送通知。我知道它可以直接从Visual Studio使用钩子或xcconfig或config.xml。但我只是无法使它工作,我已经花了大约3周现在无法得到这个工作。而我只是在黑暗中感受所有的在线阅读材料是针对不同版本的cordova,visual studio,xcode,phonegap或离子或其他。

我在这个问题上花了很多很多很多时间。

而且我想出了一个科尔多瓦after_prepare挂钩,解决了上述的XCode 7和8 这是我的问题已经...

"use strict"; 

var fs = require('fs'); 
var path = require('path'); 
var xcode = require('xcode'); 

module.exports = function (context) 
{ 
    var encoding = 'utf-8'; 
    var plist = fs.readFileSync(path.resolve(__dirname, "../GoogleService-Info.plist"), encoding); 


    fs.writeFileSync(path.resolve(__dirname, "../platforms/ios/GoogleService-Info.plist"), plist, encoding); 

    var projectPath = path.resolve(__dirname, "../platforms/ios/APP NAME.xcodeproj/project.pbxproj"); 
    var pbxFile = fs.readFileSync(projectPath, encoding); 

    var proj = new xcode.project(projectPath); 

    proj = proj.parseSync(); 

    var pbxGroupKey = proj.findPBXGroupKey({ 
     name: "Resources" 
    }); 
    proj.removeResourceFile('GoogleService-Info.plist', {}, pbxGroupKey); 
    proj.addResourceFile('GoogleService-Info.plist', {}, pbxGroupKey); 

    proj.addBuildProperty('"CODE_SIGN_IDENTITY[sdk=iphoneos*]"', '"iPhone Distribution"', 'Release'); 
    proj.addBuildProperty('DEVELOPMENT_TEAM', 'XXXXXXXX', 'Release'); 

    proj.addBuildProperty('PROVISIONING_PROFILE', "XXXXXXXX-XXXXXXXX-XXXX-XXXX-XXXXXXXX", 'Release'); 
    proj.addBuildProperty('PROVISIONING_PROFILE_SPECIFIER', '"NAME OF PROFILE"', 'Release'); 
    proj.addBuildProperty('TARGETED_DEVICE_FAMILY', '"1,2"', 'Release'); 

    proj.addTargetAttribute("DevelopmentTeam", "XXXXXXXX"); 
    var pushEntitlement = "{com.apple.Push ={enabled = 1;};}"; 
    proj.addTargetAttribute("SystemCapabilities", pushEntitlement); 

    /*var attributes = proj.getFirstProject()['firstProject']['attributes']; 
    if (attributes['TargetAttributes'] === undefined) 
    { 
     attributes['TargetAttributes'] = {}; 
    } 
    var target = proj.getFirstTarget(); 
    if (attributes['TargetAttributes'][target.uuid] === undefined) 
    { 
     attributes['TargetAttributes'][target.uuid] = {}; 
    } 
    attributes['TargetAttributes'][target.uuid]["SystemCapabilities"] = "{com.apple.Push ={enabled = 1;};}"; 
    */ 
    fs.writeFileSync(projectPath, proj.writeSync()); 

    fs.writeFileSync(path.resolve(__dirname, "../platforms/ios/APP NAME/Resources/GoogleService-Info.plist"), plist, encoding); 
    fs.writeFileSync(path.resolve(__dirname, "../platforms/ios/APP NAME/Resources/Resources/GoogleService-Info.plist"), plist, encoding); 
}; 

只记得更新你的应用程序名称,配置个人资料名称和团队ID。