customerio-expo-plugin 1.0.0-beta.4 → 1.0.0-beta.7
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.
- package/lib/commonjs/helpers/constants/ios.js +2 -2
- package/lib/commonjs/helpers/constants/ios.js.map +1 -1
- package/lib/commonjs/ios/withAppDelegateModifications.js +3 -1
- package/lib/commonjs/ios/withAppDelegateModifications.js.map +1 -1
- package/lib/commonjs/ios/withNotificationsXcodeProject.js +1 -1
- package/lib/commonjs/ios/withNotificationsXcodeProject.js.map +1 -1
- package/lib/module/helpers/constants/ios.js +2 -2
- package/lib/module/helpers/constants/ios.js.map +1 -1
- package/lib/module/ios/withAppDelegateModifications.js +3 -1
- package/lib/module/ios/withAppDelegateModifications.js.map +1 -1
- package/lib/module/ios/withNotificationsXcodeProject.js +1 -1
- package/lib/module/ios/withNotificationsXcodeProject.js.map +1 -1
- package/lib/typescript/helpers/constants/ios.d.ts +1 -1
- package/package.json +2 -2
- package/src/helpers/constants/ios.ts +2 -2
- package/src/ios/withAppDelegateModifications.ts +6 -1
- package/src/ios/withNotificationsXcodeProject.ts +4 -1
|
@@ -8,7 +8,7 @@ const LOCAL_PATH_TO_CIO_NSE_FILES = `./node_modules/customerio-expo-plugin/src/h
|
|
|
8
8
|
exports.LOCAL_PATH_TO_CIO_NSE_FILES = LOCAL_PATH_TO_CIO_NSE_FILES;
|
|
9
9
|
const IOS_DEPLOYMENT_TARGET = '13.0';
|
|
10
10
|
exports.IOS_DEPLOYMENT_TARGET = IOS_DEPLOYMENT_TARGET;
|
|
11
|
-
const CIO_SDK_VERSION = '~> 2.0
|
|
11
|
+
const CIO_SDK_VERSION = "'~> 2.0'";
|
|
12
12
|
exports.CIO_SDK_VERSION = CIO_SDK_VERSION;
|
|
13
13
|
const CIO_PODFILE_REGEX = /pod 'CustomerIO\/MessagingPushAPN'/;
|
|
14
14
|
exports.CIO_PODFILE_REGEX = CIO_PODFILE_REGEX;
|
|
@@ -82,7 +82,7 @@ const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `
|
|
|
82
82
|
completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);
|
|
83
83
|
}`;
|
|
84
84
|
exports.CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET;
|
|
85
|
-
const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN',
|
|
85
|
+
const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN', ${CIO_SDK_VERSION}`;
|
|
86
86
|
exports.CIO_PODFILE_SNIPPET = CIO_PODFILE_SNIPPET;
|
|
87
87
|
const CIO_PODFILE_NOTIFICATION_SNIPPET = `
|
|
88
88
|
target '${CIO_NOTIFICATION_TARGET_NAME}' do
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LOCAL_PATH_TO_CIO_NSE_FILES","exports","IOS_DEPLOYMENT_TARGET","CIO_SDK_VERSION","CIO_PODFILE_REGEX","CIO_CIO_TARGET_REGEX","CIO_PODFILE_NOTIFICATION_REGEX","CIO_PODFILE_POST_INSTALL_REGEX","GROUP_IDENTIFIER_TEMPLATE_REGEX","BUNDLE_SHORT_VERSION_TEMPLATE_REGEX","BUNDLE_VERSION_TEMPLATE_REGEX","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","DEFAULT_BUNDLE_VERSION","DEFAULT_BUNDLE_SHORT_VERSION","CIO_TARGET_NAME","CIO_NOTIFICATION_TARGET_NAME","CIO_APPDELEGATEHEADER_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","CIO_PODFILE_SNIPPET","CIO_PODFILE_NOTIFICATION_SNIPPET","CIO_PODFILE_NOTIFICATION_STATIC_FRAMEWORK_SNIPPET","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["ios.ts"],"sourcesContent":["export const LOCAL_PATH_TO_CIO_NSE_FILES = `./node_modules/customerio-expo-plugin/src/helpers/native-files/ios`;\nexport const IOS_DEPLOYMENT_TARGET = '13.0';\nexport const CIO_SDK_VERSION = '~> 2.0
|
|
1
|
+
{"version":3,"names":["LOCAL_PATH_TO_CIO_NSE_FILES","exports","IOS_DEPLOYMENT_TARGET","CIO_SDK_VERSION","CIO_PODFILE_REGEX","CIO_CIO_TARGET_REGEX","CIO_PODFILE_NOTIFICATION_REGEX","CIO_PODFILE_POST_INSTALL_REGEX","GROUP_IDENTIFIER_TEMPLATE_REGEX","BUNDLE_SHORT_VERSION_TEMPLATE_REGEX","BUNDLE_VERSION_TEMPLATE_REGEX","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","DEFAULT_BUNDLE_VERSION","DEFAULT_BUNDLE_SHORT_VERSION","CIO_TARGET_NAME","CIO_NOTIFICATION_TARGET_NAME","CIO_APPDELEGATEHEADER_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","CIO_PODFILE_SNIPPET","CIO_PODFILE_NOTIFICATION_SNIPPET","CIO_PODFILE_NOTIFICATION_STATIC_FRAMEWORK_SNIPPET","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["ios.ts"],"sourcesContent":["export const LOCAL_PATH_TO_CIO_NSE_FILES = `./node_modules/customerio-expo-plugin/src/helpers/native-files/ios`;\nexport const IOS_DEPLOYMENT_TARGET = '13.0';\nexport const CIO_SDK_VERSION = \"'~> 2.0'\";\nexport const CIO_PODFILE_REGEX = /pod 'CustomerIO\\/MessagingPushAPN'/;\nexport const CIO_CIO_TARGET_REGEX = /cio_target_names/;\nexport const CIO_PODFILE_NOTIFICATION_REGEX = /target 'NotificationService' do/;\nexport const CIO_PODFILE_POST_INSTALL_REGEX = /post_install do \\|installer\\|/;\nexport const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;\nexport const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = /{{BUNDLE_SHORT_VERSION}}/gm;\nexport const BUNDLE_VERSION_TEMPLATE_REGEX = /{{BUNDLE_VERSION}}/gm;\nexport const CIO_DIDFINISHLAUNCHINGMETHOD_REGEX =\n /(- \\(BOOL\\)application:\\(UIApplication \\*\\)application didFinishLaunchingWithOptions:\\(NSDictionary \\*\\)launchOptions(\\s|\\n)*?\\{)((.|\\n)*)\\[super(\\s)application:application(\\s)didFinishLaunchingWithOptions:launchOptions\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX =\n /return \\[super application:application didFailToRegisterForRemoteNotificationsWithError:error\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX =\n /(- \\(void\\)application:\\(UIApplication \\*\\)application didFailToRegisterForRemoteNotificationsWithError:\\(NSError \\*\\)error(\\s|\\n)*?\\{)(.|\\n){2}.*\\n\\}/;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX =\n /return \\[super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken\\];/;\n\nexport const CIO_APPDELEGATEDECLARATION_REGEX =\n /@implementation AppDelegate(.|\\n)/;\n\nexport const CIO_APPDELEGATEHEADER_REGEX =\n /@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate>/;\nexport const DEFAULT_BUNDLE_VERSION = '1';\nexport const DEFAULT_BUNDLE_SHORT_VERSION = '1.0';\nexport const CIO_TARGET_NAME = 'CustomerIOSDK';\nexport const CIO_NOTIFICATION_TARGET_NAME = 'NotificationService';\nexport const CIO_APPDELEGATEHEADER_SNIPPET = `\n#import <UserNotifications/UserNotifications.h>\n\n@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate, UNUserNotificationCenterDelegate>\n`;\n\nexport const CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET = `\nCIOAppPushNotificationsHandler* pnHandlerObj = [[CIOAppPushNotificationsHandler alloc] init];\n`;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET = `\n [pnHandlerObj application:application error:error];\n`;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET = `\n return [pnHandlerObj application:application deviceToken:deviceToken];\n`;\n\nexport const CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET = `\n // Register for push notifications\n [pnHandlerObj registerPushNotification:self];\n`;\n\n// Enable push handling - notification response\nexport const CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET = `\n- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler {\n [pnHandlerObj userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler];\n}`;\n\n// Foreground push handling\nexport const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `\n// show push when the app is in foreground\n- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {\n completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);\n}`;\nexport const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN', ${CIO_SDK_VERSION}`;\nexport const CIO_PODFILE_NOTIFICATION_SNIPPET = `\ntarget '${CIO_NOTIFICATION_TARGET_NAME}' do\n${CIO_PODFILE_SNIPPET}\nend`;\nexport const CIO_PODFILE_NOTIFICATION_STATIC_FRAMEWORK_SNIPPET = `\ntarget '${CIO_NOTIFICATION_TARGET_NAME}' do\n use_frameworks! :linkage => :static\n${CIO_PODFILE_SNIPPET}\nend`;\n\nexport const CIO_REGISTER_PUSHNOTIFICATION_SNIPPET = `\n@objc(registerPushNotification:)\n public func registerPushNotification(withNotificationDelegate notificationDelegate: UNUserNotificationCenterDelegate) {\n\n let center = UNUserNotificationCenter.current()\n center.delegate = notificationDelegate\n center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in\n if error == nil{\n DispatchQueue.main.async {\n UIApplication.shared.registerForRemoteNotifications()\n }\n }\n }\n }`;\n"],"mappings":"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"}
|
|
@@ -63,7 +63,9 @@ const withAppDelegateModifications = (configOuter, props) => {
|
|
|
63
63
|
_fileManagement.FileManagement.write(headerPath, headerContent);
|
|
64
64
|
stringContents = addImport(stringContents, config.modRequest.projectName);
|
|
65
65
|
stringContents = addNotificationHandlerDeclaration(stringContents);
|
|
66
|
-
|
|
66
|
+
|
|
67
|
+
// any other value would be treated as true, it has to be explicitly false to disable
|
|
68
|
+
if (props.disableNotificationRegistration !== undefined && props.disableNotificationRegistration === false) {
|
|
67
69
|
stringContents = addNotificationConfiguration(stringContents);
|
|
68
70
|
}
|
|
69
71
|
stringContents = addAdditionalMethodsForPushNotifications(stringContents);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_configPlugins","require","_Paths","_ios","_codeInjection","_fileManagement","pushCodeSnippets","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","additionalMethodsForPushNotifications","join","addImport","stringContents","appName","importRegex","addedImport","getImportSnippet","match","endOfMatchIndex","index","undefined","length","injectCodeByLineNumber","addNotificationHandlerDeclaration","injectCodeByMultiLineRegex","CIO_APPDELEGATEDECLARATION_REGEX","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","addNotificationConfiguration","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","addDidFailToRegisterForRemoteNotificationsWithError","injectCodeByMultiLineRegexAndReplaceLine","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","AddDidRegisterForRemoteNotificationsWithDeviceToken","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","addAdditionalMethodsForPushNotifications","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","addAppdelegateHeaderModification","CIO_APPDELEGATEHEADER_REGEX","CIO_APPDELEGATEHEADER_SNIPPET","withAppDelegateModifications","configOuter","props","withAppDelegate","config","modResults","contents","regex","RegExp","modRequest","projectName","headerPath","getAppDelegateHeaderFilePath","projectRoot","headerContent","FileManagement","read","write","disableNotificationRegistration","console","log","exports"],"sources":["withAppDelegateModifications.ts"],"sourcesContent":["import { ConfigPlugin, withAppDelegate } from '@expo/config-plugins';\nimport { getAppDelegateHeaderFilePath } from '@expo/config-plugins/build/ios/Paths';\n\nimport {\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n} from '../helpers/constants/ios';\nimport {\n injectCodeByLineNumber,\n injectCodeByMultiLineRegex,\n injectCodeByMultiLineRegexAndReplaceLine,\n} from '../helpers/utils/codeInjection';\nimport { FileManagement } from '../helpers/utils/fileManagement';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\n\nconst pushCodeSnippets = [\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n];\n\nconst additionalMethodsForPushNotifications = `${pushCodeSnippets.join(\n '\\n'\n)}\\n`; // Join newlines and ensure a newline at the end.\n\nconst addImport = (stringContents: string, appName: string) => {\n const importRegex = /^(#import .*)\\n/gm;\n const addedImport = getImportSnippet(appName);\n\n const match = stringContents.match(importRegex);\n let endOfMatchIndex: number;\n if (!match || match.index === undefined) {\n // No imports found, just add to start of file:\n endOfMatchIndex = 0;\n } else {\n // Add after first import:\n endOfMatchIndex = match.index + match[0].length;\n }\n\n stringContents = injectCodeByLineNumber(\n stringContents,\n endOfMatchIndex,\n addedImport\n ).join('\\n');\n\n return stringContents;\n};\n\nconst addNotificationHandlerDeclaration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addNotificationConfiguration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addDidFailToRegisterForRemoteNotificationsWithError = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET\n );\n\n return stringContents;\n};\n\nconst AddDidRegisterForRemoteNotificationsWithDeviceToken = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addAdditionalMethodsForPushNotifications = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n additionalMethodsForPushNotifications\n );\n\n return stringContents;\n};\n\nconst addAppdelegateHeaderModification = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET\n );\n\n return stringContents;\n};\n\nexport const withAppDelegateModifications: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withAppDelegate(configOuter, async (config) => {\n let stringContents = config.modResults.contents;\n const regex = new RegExp(\n `#import <${config.modRequest.projectName}-Swift.h>`\n );\n const match = stringContents.match(regex);\n\n if (!match) {\n const headerPath = getAppDelegateHeaderFilePath(\n config.modRequest.projectRoot\n );\n let headerContent = await FileManagement.read(headerPath);\n headerContent = addAppdelegateHeaderModification(headerContent);\n FileManagement.write(headerPath, headerContent);\n\n stringContents = addImport(\n stringContents,\n config.modRequest.projectName as string\n );\n stringContents = addNotificationHandlerDeclaration(stringContents);\n if (!props.disableNotificationRegistration) {\n stringContents = addNotificationConfiguration(stringContents);\n }\n stringContents = addAdditionalMethodsForPushNotifications(stringContents);\n stringContents =\n addDidFailToRegisterForRemoteNotificationsWithError(stringContents);\n stringContents =\n AddDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);\n\n config.modResults.contents = stringContents;\n } else {\n console.log('Customerio AppDelegate changes already exist. Skipping...');\n }\n\n return config;\n });\n};\nfunction getImportSnippet(appName: string) {\n return `\n// Add swift bridge imports\n#import <ExpoModulesCore-Swift.h>\n#import <${appName}-Swift.h>\n `;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,IAAA,GAAAF,OAAA;AAeA,IAAAG,cAAA,GAAAH,OAAA;AAKA,IAAAI,eAAA,GAAAJ,OAAA;AAGA,MAAMK,gBAAgB,GAAG,CACvBC,sDAAiD,EACjDC,+CAA0C,CAC3C;AAED,MAAMC,qCAAqC,GAAI,GAAEH,gBAAgB,CAACI,IAAI,CACpE,IAAI,CACJ,IAAG,CAAC,CAAC;;AAEP,MAAMC,SAAS,GAAGA,CAACC,cAAsB,EAAEC,OAAe,KAAK;EAC7D,MAAMC,WAAW,GAAG,mBAAmB;EACvC,MAAMC,WAAW,GAAGC,gBAAgB,CAACH,OAAO,CAAC;EAE7C,MAAMI,KAAK,GAAGL,cAAc,CAACK,KAAK,CAACH,WAAW,CAAC;EAC/C,IAAII,eAAuB;EAC3B,IAAI,CAACD,KAAK,IAAIA,KAAK,CAACE,KAAK,KAAKC,SAAS,EAAE;IACvC;IACAF,eAAe,GAAG,CAAC;EACrB,CAAC,MAAM;IACL;IACAA,eAAe,GAAGD,KAAK,CAACE,KAAK,GAAGF,KAAK,CAAC,CAAC,CAAC,CAACI,MAAM;EACjD;EAEAT,cAAc,GAAG,IAAAU,qCAAsB,EACrCV,cAAc,EACdM,eAAe,EACfH,WAAW,CACZ,CAACL,IAAI,CAAC,IAAI,CAAC;EAEZ,OAAOE,cAAc;AACvB,CAAC;AAED,MAAMW,iCAAiC,GAAIX,cAAsB,IAAK;EACpEA,cAAc,GAAG,IAAAY,yCAA0B,EACzCZ,cAAc,EACda,qCAAgC,EAChCC,mDAA8C,CAC/C;EAED,OAAOd,cAAc;AACvB,CAAC;AAED,MAAMe,4BAA4B,GAAIf,cAAsB,IAAK;EAC/DA,cAAc,GAAG,IAAAY,yCAA0B,EACzCZ,cAAc,EACdgB,uCAAkC,EAClCC,gDAA2C,CAC5C;EAED,OAAOjB,cAAc;AACvB,CAAC;AAED,MAAMkB,mDAAmD,GACvDlB,cAAsB,IACnB;EACHA,cAAc,GAAG,IAAAmB,uDAAwC,EACvDnB,cAAc,EACdoB,+DAA0D,EAC1DC,iEAA4D,CAC7D;EAED,OAAOrB,cAAc;AACvB,CAAC;AAED,MAAMsB,mDAAmD,GACvDtB,cAAsB,IACnB;EACHA,cAAc,GAAG,IAAAmB,uDAAwC,EACvDnB,cAAc,EACduB,+DAA0D,EAC1DC,iEAA4D,CAC7D;EAED,OAAOxB,cAAc;AACvB,CAAC;AAED,MAAMyB,wCAAwC,GAAIzB,cAAsB,IAAK;EAC3EA,cAAc,GAAG,IAAAY,yCAA0B,EACzCZ,cAAc,EACd0B,mEAA8D,EAC9D7B,qCAAqC,CACtC;EAED,OAAOG,cAAc;AACvB,CAAC;AAED,MAAM2B,gCAAgC,GAAI3B,cAAsB,IAAK;EACnEA,cAAc,GAAG,IAAAmB,uDAAwC,EACvDnB,cAAc,EACd4B,gCAA2B,EAC3BC,kCAA6B,CAC9B;EAED,OAAO7B,cAAc;AACvB,CAAC;AAEM,MAAM8B,4BAEZ,GAAGA,CAACC,WAAW,EAAEC,KAAK,KAAK;EAC1B,OAAO,IAAAC,8BAAe,EAACF,WAAW,EAAE,MAAOG,MAAM,IAAK;IACpD,IAAIlC,cAAc,GAAGkC,MAAM,CAACC,UAAU,CAACC,QAAQ;IAC/C,MAAMC,KAAK,GAAG,IAAIC,MAAM,CACrB,YAAWJ,MAAM,CAACK,UAAU,CAACC,WAAY,WAAU,CACrD;IACD,MAAMnC,KAAK,GAAGL,cAAc,CAACK,KAAK,CAACgC,KAAK,CAAC;IAEzC,IAAI,CAAChC,KAAK,EAAE;MACV,MAAMoC,UAAU,GAAG,IAAAC,mCAA4B,EAC7CR,MAAM,CAACK,UAAU,CAACI,WAAW,CAC9B;MACD,IAAIC,aAAa,GAAG,MAAMC,8BAAc,CAACC,IAAI,CAACL,UAAU,CAAC;MACzDG,aAAa,GAAGjB,gCAAgC,CAACiB,aAAa,CAAC;MAC/DC,8BAAc,CAACE,KAAK,CAACN,UAAU,EAAEG,aAAa,CAAC;MAE/C5C,cAAc,GAAGD,SAAS,CACxBC,cAAc,EACdkC,MAAM,CAACK,UAAU,CAACC,WAAW,CAC9B;MACDxC,cAAc,GAAGW,iCAAiC,CAACX,cAAc,CAAC;MAClE,IAAI,CAACgC,KAAK,CAACgB,+BAA+B,EAAE;QAC1ChD,cAAc,GAAGe,4BAA4B,CAACf,cAAc,CAAC;MAC/D;MACAA,cAAc,GAAGyB,wCAAwC,CAACzB,cAAc,CAAC;MACzEA,cAAc,GACZkB,mDAAmD,CAAClB,cAAc,CAAC;MACrEA,cAAc,GACZsB,mDAAmD,CAACtB,cAAc,CAAC;MAErEkC,MAAM,CAACC,UAAU,CAACC,QAAQ,GAAGpC,cAAc;IAC7C,CAAC,MAAM;MACLiD,OAAO,CAACC,GAAG,CAAC,2DAA2D,CAAC;IAC1E;IAEA,OAAOhB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACiB,OAAA,CAAArB,4BAAA,GAAAA,4BAAA;AACF,SAAS1B,gBAAgBA,CAACH,OAAe,EAAE;EACzC,OAAQ;AACV;AACA;AACA,WAAWA,OAAQ;AACnB,GAAG;AACH"}
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","_Paths","_ios","_codeInjection","_fileManagement","pushCodeSnippets","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","additionalMethodsForPushNotifications","join","addImport","stringContents","appName","importRegex","addedImport","getImportSnippet","match","endOfMatchIndex","index","undefined","length","injectCodeByLineNumber","addNotificationHandlerDeclaration","injectCodeByMultiLineRegex","CIO_APPDELEGATEDECLARATION_REGEX","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","addNotificationConfiguration","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","addDidFailToRegisterForRemoteNotificationsWithError","injectCodeByMultiLineRegexAndReplaceLine","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","AddDidRegisterForRemoteNotificationsWithDeviceToken","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","addAdditionalMethodsForPushNotifications","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","addAppdelegateHeaderModification","CIO_APPDELEGATEHEADER_REGEX","CIO_APPDELEGATEHEADER_SNIPPET","withAppDelegateModifications","configOuter","props","withAppDelegate","config","modResults","contents","regex","RegExp","modRequest","projectName","headerPath","getAppDelegateHeaderFilePath","projectRoot","headerContent","FileManagement","read","write","disableNotificationRegistration","console","log","exports"],"sources":["withAppDelegateModifications.ts"],"sourcesContent":["import { ConfigPlugin, withAppDelegate } from '@expo/config-plugins';\nimport { getAppDelegateHeaderFilePath } from '@expo/config-plugins/build/ios/Paths';\n\nimport {\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n} from '../helpers/constants/ios';\nimport {\n injectCodeByLineNumber,\n injectCodeByMultiLineRegex,\n injectCodeByMultiLineRegexAndReplaceLine,\n} from '../helpers/utils/codeInjection';\nimport { FileManagement } from '../helpers/utils/fileManagement';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\n\nconst pushCodeSnippets = [\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n];\n\nconst additionalMethodsForPushNotifications = `${pushCodeSnippets.join(\n '\\n'\n)}\\n`; // Join newlines and ensure a newline at the end.\n\nconst addImport = (stringContents: string, appName: string) => {\n const importRegex = /^(#import .*)\\n/gm;\n const addedImport = getImportSnippet(appName);\n\n const match = stringContents.match(importRegex);\n let endOfMatchIndex: number;\n if (!match || match.index === undefined) {\n // No imports found, just add to start of file:\n endOfMatchIndex = 0;\n } else {\n // Add after first import:\n endOfMatchIndex = match.index + match[0].length;\n }\n\n stringContents = injectCodeByLineNumber(\n stringContents,\n endOfMatchIndex,\n addedImport\n ).join('\\n');\n\n return stringContents;\n};\n\nconst addNotificationHandlerDeclaration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addNotificationConfiguration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addDidFailToRegisterForRemoteNotificationsWithError = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET\n );\n\n return stringContents;\n};\n\nconst AddDidRegisterForRemoteNotificationsWithDeviceToken = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addAdditionalMethodsForPushNotifications = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n additionalMethodsForPushNotifications\n );\n\n return stringContents;\n};\n\nconst addAppdelegateHeaderModification = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET\n );\n\n return stringContents;\n};\n\nexport const withAppDelegateModifications: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withAppDelegate(configOuter, async (config) => {\n let stringContents = config.modResults.contents;\n const regex = new RegExp(\n `#import <${config.modRequest.projectName}-Swift.h>`\n );\n const match = stringContents.match(regex);\n\n if (!match) {\n const headerPath = getAppDelegateHeaderFilePath(\n config.modRequest.projectRoot\n );\n let headerContent = await FileManagement.read(headerPath);\n headerContent = addAppdelegateHeaderModification(headerContent);\n FileManagement.write(headerPath, headerContent);\n\n stringContents = addImport(\n stringContents,\n config.modRequest.projectName as string\n );\n stringContents = addNotificationHandlerDeclaration(stringContents);\n\n // any other value would be treated as true, it has to be explicitly false to disable\n if (\n props.disableNotificationRegistration !== undefined &&\n props.disableNotificationRegistration === false\n ) {\n stringContents = addNotificationConfiguration(stringContents);\n }\n stringContents = addAdditionalMethodsForPushNotifications(stringContents);\n stringContents =\n addDidFailToRegisterForRemoteNotificationsWithError(stringContents);\n stringContents =\n AddDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);\n\n config.modResults.contents = stringContents;\n } else {\n console.log('Customerio AppDelegate changes already exist. Skipping...');\n }\n\n return config;\n });\n};\nfunction getImportSnippet(appName: string) {\n return `\n// Add swift bridge imports\n#import <ExpoModulesCore-Swift.h>\n#import <${appName}-Swift.h>\n `;\n}\n"],"mappings":"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"}
|
|
@@ -251,7 +251,7 @@ const updatePushFile = (options, envFileName) => {
|
|
|
251
251
|
const REGISTER_RE = /\{\{REGISTER_SNIPPET\}\}/;
|
|
252
252
|
let envFileContent = _fileManagement.FileManagement.readFile(envFileName);
|
|
253
253
|
let snippet = '';
|
|
254
|
-
if (
|
|
254
|
+
if (options.disableNotificationRegistration !== undefined && options.disableNotificationRegistration === false) {
|
|
255
255
|
snippet = _ios.CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;
|
|
256
256
|
}
|
|
257
257
|
envFileContent = (0, _codeInjection.replaceCodeByRegex)(envFileContent, REGISTER_RE, snippet);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_configPlugins","require","_xcode","_interopRequireDefault","_ios","_codeInjection","_injectCIOPodfileCode","_fileManagement","obj","__esModule","default","PLIST_FILENAME","CIO_NOTIFICATION_TARGET_NAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","iosPath","appName","projPath","xcodeProject","xcode","project","parse","err","_options$pushNotifica","Error","JSON","stringify","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","FileManagement","writeFile","writeSync","withCioNotificationsXcodeProject","configOuter","props","withXcodeProject","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","DEFAULT_BUNDLE_VERSION","exports","injectCIONotificationPodfileCode","pbxTargetByName","console","warn","nsePath","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","LOCAL_PATH_TO_CIO_NSE_FILES","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","replaceCodeByRegex","envFileName","_options$pushNotifica2","_options$pushNotifica3","_options$pushNotifica6","_options$pushNotifica7","_options$pushNotifica10","_options$pushNotifica11","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica4","_options$pushNotifica5","apiKey","_options$pushNotifica8","_options$pushNotifica9","region","_options$pushNotifica12","_options$pushNotifica13","_options$pushNotifica14","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica15","_options$pushNotifica16","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import { ConfigPlugin, withXcodeProject } from '@expo/config-plugins';\nimport xcode from 'xcode';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS\n) => {\n // iosPath and appName are predefined from Expo config.\n // See function withCioNotificationsXcodeProject to get where the variabes are pulled from.\n const { iosPath, appName } = options;\n\n const projPath = `${iosPath}/${appName}.xcodeproj/project.pbxproj`;\n\n const xcodeProject = xcode.project(projPath);\n\n xcodeProject.parse(async function (err: Error) {\n if (err) {\n throw new Error(`Error parsing iOS project: ${JSON.stringify(err)}`);\n }\n\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n\n FileManagement.writeFile(projPath, xcodeProject.writeSync());\n });\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n await addNotificationServiceExtension(options);\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (!options.disableNotificationRegistration) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","_xcode","_interopRequireDefault","_ios","_codeInjection","_injectCIOPodfileCode","_fileManagement","obj","__esModule","default","PLIST_FILENAME","CIO_NOTIFICATION_TARGET_NAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","iosPath","appName","projPath","xcodeProject","xcode","project","parse","err","_options$pushNotifica","Error","JSON","stringify","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","FileManagement","writeFile","writeSync","withCioNotificationsXcodeProject","configOuter","props","withXcodeProject","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","DEFAULT_BUNDLE_VERSION","exports","injectCIONotificationPodfileCode","pbxTargetByName","console","warn","nsePath","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","LOCAL_PATH_TO_CIO_NSE_FILES","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","replaceCodeByRegex","envFileName","_options$pushNotifica2","_options$pushNotifica3","_options$pushNotifica6","_options$pushNotifica7","_options$pushNotifica10","_options$pushNotifica11","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica4","_options$pushNotifica5","apiKey","_options$pushNotifica8","_options$pushNotifica9","region","_options$pushNotifica12","_options$pushNotifica13","_options$pushNotifica14","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica15","_options$pushNotifica16","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import { ConfigPlugin, withXcodeProject } from '@expo/config-plugins';\nimport xcode from 'xcode';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS\n) => {\n // iosPath and appName are predefined from Expo config.\n // See function withCioNotificationsXcodeProject to get where the variabes are pulled from.\n const { iosPath, appName } = options;\n\n const projPath = `${iosPath}/${appName}.xcodeproj/project.pbxproj`;\n\n const xcodeProject = xcode.project(projPath);\n\n xcodeProject.parse(async function (err: Error) {\n if (err) {\n throw new Error(`Error parsing iOS project: ${JSON.stringify(err)}`);\n }\n\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n\n FileManagement.writeFile(projPath, xcodeProject.writeSync());\n });\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n await addNotificationServiceExtension(options);\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (\n options.disableNotificationRegistration !== undefined &&\n options.disableNotificationRegistration === false\n ) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const LOCAL_PATH_TO_CIO_NSE_FILES = `./node_modules/customerio-expo-plugin/src/helpers/native-files/ios`;
|
|
2
2
|
export const IOS_DEPLOYMENT_TARGET = '13.0';
|
|
3
|
-
export const CIO_SDK_VERSION = '~> 2.0
|
|
3
|
+
export const CIO_SDK_VERSION = "'~> 2.0'";
|
|
4
4
|
export const CIO_PODFILE_REGEX = /pod 'CustomerIO\/MessagingPushAPN'/;
|
|
5
5
|
export const CIO_CIO_TARGET_REGEX = /cio_target_names/;
|
|
6
6
|
export const CIO_PODFILE_NOTIFICATION_REGEX = /target 'NotificationService' do/;
|
|
@@ -49,7 +49,7 @@ export const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `
|
|
|
49
49
|
- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
|
|
50
50
|
completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);
|
|
51
51
|
}`;
|
|
52
|
-
export const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN',
|
|
52
|
+
export const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN', ${CIO_SDK_VERSION}`;
|
|
53
53
|
export const CIO_PODFILE_NOTIFICATION_SNIPPET = `
|
|
54
54
|
target '${CIO_NOTIFICATION_TARGET_NAME}' do
|
|
55
55
|
${CIO_PODFILE_SNIPPET}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LOCAL_PATH_TO_CIO_NSE_FILES","IOS_DEPLOYMENT_TARGET","CIO_SDK_VERSION","CIO_PODFILE_REGEX","CIO_CIO_TARGET_REGEX","CIO_PODFILE_NOTIFICATION_REGEX","CIO_PODFILE_POST_INSTALL_REGEX","GROUP_IDENTIFIER_TEMPLATE_REGEX","BUNDLE_SHORT_VERSION_TEMPLATE_REGEX","BUNDLE_VERSION_TEMPLATE_REGEX","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","DEFAULT_BUNDLE_VERSION","DEFAULT_BUNDLE_SHORT_VERSION","CIO_TARGET_NAME","CIO_NOTIFICATION_TARGET_NAME","CIO_APPDELEGATEHEADER_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","CIO_PODFILE_SNIPPET","CIO_PODFILE_NOTIFICATION_SNIPPET","CIO_PODFILE_NOTIFICATION_STATIC_FRAMEWORK_SNIPPET","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["ios.ts"],"sourcesContent":["export const LOCAL_PATH_TO_CIO_NSE_FILES = `./node_modules/customerio-expo-plugin/src/helpers/native-files/ios`;\nexport const IOS_DEPLOYMENT_TARGET = '13.0';\nexport const CIO_SDK_VERSION = '~> 2.0
|
|
1
|
+
{"version":3,"names":["LOCAL_PATH_TO_CIO_NSE_FILES","IOS_DEPLOYMENT_TARGET","CIO_SDK_VERSION","CIO_PODFILE_REGEX","CIO_CIO_TARGET_REGEX","CIO_PODFILE_NOTIFICATION_REGEX","CIO_PODFILE_POST_INSTALL_REGEX","GROUP_IDENTIFIER_TEMPLATE_REGEX","BUNDLE_SHORT_VERSION_TEMPLATE_REGEX","BUNDLE_VERSION_TEMPLATE_REGEX","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","DEFAULT_BUNDLE_VERSION","DEFAULT_BUNDLE_SHORT_VERSION","CIO_TARGET_NAME","CIO_NOTIFICATION_TARGET_NAME","CIO_APPDELEGATEHEADER_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","CIO_PODFILE_SNIPPET","CIO_PODFILE_NOTIFICATION_SNIPPET","CIO_PODFILE_NOTIFICATION_STATIC_FRAMEWORK_SNIPPET","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET"],"sources":["ios.ts"],"sourcesContent":["export const LOCAL_PATH_TO_CIO_NSE_FILES = `./node_modules/customerio-expo-plugin/src/helpers/native-files/ios`;\nexport const IOS_DEPLOYMENT_TARGET = '13.0';\nexport const CIO_SDK_VERSION = \"'~> 2.0'\";\nexport const CIO_PODFILE_REGEX = /pod 'CustomerIO\\/MessagingPushAPN'/;\nexport const CIO_CIO_TARGET_REGEX = /cio_target_names/;\nexport const CIO_PODFILE_NOTIFICATION_REGEX = /target 'NotificationService' do/;\nexport const CIO_PODFILE_POST_INSTALL_REGEX = /post_install do \\|installer\\|/;\nexport const GROUP_IDENTIFIER_TEMPLATE_REGEX = /{{GROUP_IDENTIFIER}}/gm;\nexport const BUNDLE_SHORT_VERSION_TEMPLATE_REGEX = /{{BUNDLE_SHORT_VERSION}}/gm;\nexport const BUNDLE_VERSION_TEMPLATE_REGEX = /{{BUNDLE_VERSION}}/gm;\nexport const CIO_DIDFINISHLAUNCHINGMETHOD_REGEX =\n /(- \\(BOOL\\)application:\\(UIApplication \\*\\)application didFinishLaunchingWithOptions:\\(NSDictionary \\*\\)launchOptions(\\s|\\n)*?\\{)((.|\\n)*)\\[super(\\s)application:application(\\s)didFinishLaunchingWithOptions:launchOptions\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX =\n /return \\[super application:application didFailToRegisterForRemoteNotificationsWithError:error\\];/;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX =\n /(- \\(void\\)application:\\(UIApplication \\*\\)application didFailToRegisterForRemoteNotificationsWithError:\\(NSError \\*\\)error(\\s|\\n)*?\\{)(.|\\n){2}.*\\n\\}/;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX =\n /return \\[super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken\\];/;\n\nexport const CIO_APPDELEGATEDECLARATION_REGEX =\n /@implementation AppDelegate(.|\\n)/;\n\nexport const CIO_APPDELEGATEHEADER_REGEX =\n /@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate>/;\nexport const DEFAULT_BUNDLE_VERSION = '1';\nexport const DEFAULT_BUNDLE_SHORT_VERSION = '1.0';\nexport const CIO_TARGET_NAME = 'CustomerIOSDK';\nexport const CIO_NOTIFICATION_TARGET_NAME = 'NotificationService';\nexport const CIO_APPDELEGATEHEADER_SNIPPET = `\n#import <UserNotifications/UserNotifications.h>\n\n@interface AppDelegate : EXAppDelegateWrapper <RCTBridgeDelegate, UNUserNotificationCenterDelegate>\n`;\n\nexport const CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET = `\nCIOAppPushNotificationsHandler* pnHandlerObj = [[CIOAppPushNotificationsHandler alloc] init];\n`;\n\nexport const CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET = `\n [pnHandlerObj application:application error:error];\n`;\n\nexport const CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET = `\n return [pnHandlerObj application:application deviceToken:deviceToken];\n`;\n\nexport const CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET = `\n // Register for push notifications\n [pnHandlerObj registerPushNotification:self];\n`;\n\n// Enable push handling - notification response\nexport const CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET = `\n- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler {\n [pnHandlerObj userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler];\n}`;\n\n// Foreground push handling\nexport const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `\n// show push when the app is in foreground\n- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {\n completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);\n}`;\nexport const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN', ${CIO_SDK_VERSION}`;\nexport const CIO_PODFILE_NOTIFICATION_SNIPPET = `\ntarget '${CIO_NOTIFICATION_TARGET_NAME}' do\n${CIO_PODFILE_SNIPPET}\nend`;\nexport const CIO_PODFILE_NOTIFICATION_STATIC_FRAMEWORK_SNIPPET = `\ntarget '${CIO_NOTIFICATION_TARGET_NAME}' do\n use_frameworks! :linkage => :static\n${CIO_PODFILE_SNIPPET}\nend`;\n\nexport const CIO_REGISTER_PUSHNOTIFICATION_SNIPPET = `\n@objc(registerPushNotification:)\n public func registerPushNotification(withNotificationDelegate notificationDelegate: UNUserNotificationCenterDelegate) {\n\n let center = UNUserNotificationCenter.current()\n center.delegate = notificationDelegate\n center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in\n if error == nil{\n DispatchQueue.main.async {\n UIApplication.shared.registerForRemoteNotifications()\n }\n }\n }\n }`;\n"],"mappings":"AAAA,OAAO,MAAMA,2BAA2B,GAAI,oEAAmE;AAC/G,OAAO,MAAMC,qBAAqB,GAAG,MAAM;AAC3C,OAAO,MAAMC,eAAe,GAAG,UAAU;AACzC,OAAO,MAAMC,iBAAiB,GAAG,oCAAoC;AACrE,OAAO,MAAMC,oBAAoB,GAAG,kBAAkB;AACtD,OAAO,MAAMC,8BAA8B,GAAG,iCAAiC;AAC/E,OAAO,MAAMC,8BAA8B,GAAG,+BAA+B;AAC7E,OAAO,MAAMC,+BAA+B,GAAG,wBAAwB;AACvE,OAAO,MAAMC,mCAAmC,GAAG,4BAA4B;AAC/E,OAAO,MAAMC,6BAA6B,GAAG,sBAAsB;AACnE,OAAO,MAAMC,kCAAkC,GAC7C,gOAAgO;AAElO,OAAO,MAAMC,0DAA0D,GACrE,kGAAkG;AAEpG,OAAO,MAAMC,8DAA8D,GACzE,wJAAwJ;AAE1J,OAAO,MAAMC,0DAA0D,GACrE,wGAAwG;AAE1G,OAAO,MAAMC,gCAAgC,GAC3C,mCAAmC;AAErC,OAAO,MAAMC,2BAA2B,GACtC,mEAAmE;AACrE,OAAO,MAAMC,sBAAsB,GAAG,GAAG;AACzC,OAAO,MAAMC,4BAA4B,GAAG,KAAK;AACjD,OAAO,MAAMC,eAAe,GAAG,eAAe;AAC9C,OAAO,MAAMC,4BAA4B,GAAG,qBAAqB;AACjE,OAAO,MAAMC,6BAA6B,GAAI;AAC9C;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,8CAA8C,GAAI;AAC/D;AACA,CAAC;AAED,OAAO,MAAMC,4DAA4D,GAAI;AAC7E;AACA,CAAC;AAED,OAAO,MAAMC,4DAA4D,GAAI;AAC7E;AACA,CAAC;AAED,OAAO,MAAMC,2CAA2C,GAAI;AAC5D;AACA;AACA,CAAC;;AAED;AACA,OAAO,MAAMC,iDAAiD,GAAI;AAClE;AACA;AACA,EAAE;;AAEF;AACA,OAAO,MAAMC,0CAA0C,GAAI;AAC3D;AACA;AACA;AACA,EAAE;AACF,OAAO,MAAMC,mBAAmB,GAAI,wCAAuCzB,eAAgB,EAAC;AAC5F,OAAO,MAAM0B,gCAAgC,GAAI;AACjD,UAAUT,4BAA6B;AACvC,EAAEQ,mBAAoB;AACtB,IAAI;AACJ,OAAO,MAAME,iDAAiD,GAAI;AAClE,UAAUV,4BAA6B;AACvC;AACA,EAAEQ,mBAAoB;AACtB,IAAI;AAEJ,OAAO,MAAMG,qCAAqC,GAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI"}
|
|
@@ -57,7 +57,9 @@ export const withAppDelegateModifications = (configOuter, props) => {
|
|
|
57
57
|
FileManagement.write(headerPath, headerContent);
|
|
58
58
|
stringContents = addImport(stringContents, config.modRequest.projectName);
|
|
59
59
|
stringContents = addNotificationHandlerDeclaration(stringContents);
|
|
60
|
-
|
|
60
|
+
|
|
61
|
+
// any other value would be treated as true, it has to be explicitly false to disable
|
|
62
|
+
if (props.disableNotificationRegistration !== undefined && props.disableNotificationRegistration === false) {
|
|
61
63
|
stringContents = addNotificationConfiguration(stringContents);
|
|
62
64
|
}
|
|
63
65
|
stringContents = addAdditionalMethodsForPushNotifications(stringContents);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["withAppDelegate","getAppDelegateHeaderFilePath","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","CIO_APPDELEGATEHEADER_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","injectCodeByLineNumber","injectCodeByMultiLineRegex","injectCodeByMultiLineRegexAndReplaceLine","FileManagement","pushCodeSnippets","additionalMethodsForPushNotifications","join","addImport","stringContents","appName","importRegex","addedImport","getImportSnippet","match","endOfMatchIndex","index","undefined","length","addNotificationHandlerDeclaration","addNotificationConfiguration","addDidFailToRegisterForRemoteNotificationsWithError","AddDidRegisterForRemoteNotificationsWithDeviceToken","addAdditionalMethodsForPushNotifications","addAppdelegateHeaderModification","withAppDelegateModifications","configOuter","props","config","modResults","contents","regex","RegExp","modRequest","projectName","headerPath","projectRoot","headerContent","read","write","disableNotificationRegistration","console","log"],"sources":["withAppDelegateModifications.ts"],"sourcesContent":["import { ConfigPlugin, withAppDelegate } from '@expo/config-plugins';\nimport { getAppDelegateHeaderFilePath } from '@expo/config-plugins/build/ios/Paths';\n\nimport {\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n} from '../helpers/constants/ios';\nimport {\n injectCodeByLineNumber,\n injectCodeByMultiLineRegex,\n injectCodeByMultiLineRegexAndReplaceLine,\n} from '../helpers/utils/codeInjection';\nimport { FileManagement } from '../helpers/utils/fileManagement';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\n\nconst pushCodeSnippets = [\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n];\n\nconst additionalMethodsForPushNotifications = `${pushCodeSnippets.join(\n '\\n'\n)}\\n`; // Join newlines and ensure a newline at the end.\n\nconst addImport = (stringContents: string, appName: string) => {\n const importRegex = /^(#import .*)\\n/gm;\n const addedImport = getImportSnippet(appName);\n\n const match = stringContents.match(importRegex);\n let endOfMatchIndex: number;\n if (!match || match.index === undefined) {\n // No imports found, just add to start of file:\n endOfMatchIndex = 0;\n } else {\n // Add after first import:\n endOfMatchIndex = match.index + match[0].length;\n }\n\n stringContents = injectCodeByLineNumber(\n stringContents,\n endOfMatchIndex,\n addedImport\n ).join('\\n');\n\n return stringContents;\n};\n\nconst addNotificationHandlerDeclaration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addNotificationConfiguration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addDidFailToRegisterForRemoteNotificationsWithError = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET\n );\n\n return stringContents;\n};\n\nconst AddDidRegisterForRemoteNotificationsWithDeviceToken = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addAdditionalMethodsForPushNotifications = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n additionalMethodsForPushNotifications\n );\n\n return stringContents;\n};\n\nconst addAppdelegateHeaderModification = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET\n );\n\n return stringContents;\n};\n\nexport const withAppDelegateModifications: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withAppDelegate(configOuter, async (config) => {\n let stringContents = config.modResults.contents;\n const regex = new RegExp(\n `#import <${config.modRequest.projectName}-Swift.h>`\n );\n const match = stringContents.match(regex);\n\n if (!match) {\n const headerPath = getAppDelegateHeaderFilePath(\n config.modRequest.projectRoot\n );\n let headerContent = await FileManagement.read(headerPath);\n headerContent = addAppdelegateHeaderModification(headerContent);\n FileManagement.write(headerPath, headerContent);\n\n stringContents = addImport(\n stringContents,\n config.modRequest.projectName as string\n );\n stringContents = addNotificationHandlerDeclaration(stringContents);\n if (!props.disableNotificationRegistration) {\n stringContents = addNotificationConfiguration(stringContents);\n }\n stringContents = addAdditionalMethodsForPushNotifications(stringContents);\n stringContents =\n addDidFailToRegisterForRemoteNotificationsWithError(stringContents);\n stringContents =\n AddDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);\n\n config.modResults.contents = stringContents;\n } else {\n console.log('Customerio AppDelegate changes already exist. Skipping...');\n }\n\n return config;\n });\n};\nfunction getImportSnippet(appName: string) {\n return `\n// Add swift bridge imports\n#import <ExpoModulesCore-Swift.h>\n#import <${appName}-Swift.h>\n `;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["withAppDelegate","getAppDelegateHeaderFilePath","CIO_APPDELEGATEDECLARATION_REGEX","CIO_APPDELEGATEHEADER_REGEX","CIO_APPDELEGATEHEADER_SNIPPET","CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX","CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET","CIO_DIDFINISHLAUNCHINGMETHOD_REGEX","CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX","CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET","CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET","CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET","injectCodeByLineNumber","injectCodeByMultiLineRegex","injectCodeByMultiLineRegexAndReplaceLine","FileManagement","pushCodeSnippets","additionalMethodsForPushNotifications","join","addImport","stringContents","appName","importRegex","addedImport","getImportSnippet","match","endOfMatchIndex","index","undefined","length","addNotificationHandlerDeclaration","addNotificationConfiguration","addDidFailToRegisterForRemoteNotificationsWithError","AddDidRegisterForRemoteNotificationsWithDeviceToken","addAdditionalMethodsForPushNotifications","addAppdelegateHeaderModification","withAppDelegateModifications","configOuter","props","config","modResults","contents","regex","RegExp","modRequest","projectName","headerPath","projectRoot","headerContent","read","write","disableNotificationRegistration","console","log"],"sources":["withAppDelegateModifications.ts"],"sourcesContent":["import { ConfigPlugin, withAppDelegate } from '@expo/config-plugins';\nimport { getAppDelegateHeaderFilePath } from '@expo/config-plugins/build/ios/Paths';\n\nimport {\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n} from '../helpers/constants/ios';\nimport {\n injectCodeByLineNumber,\n injectCodeByMultiLineRegex,\n injectCodeByMultiLineRegexAndReplaceLine,\n} from '../helpers/utils/codeInjection';\nimport { FileManagement } from '../helpers/utils/fileManagement';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\n\nconst pushCodeSnippets = [\n CIO_DIDRECEIVENOTIFICATIONRESPONSEHANDLER_SNIPPET,\n CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET,\n];\n\nconst additionalMethodsForPushNotifications = `${pushCodeSnippets.join(\n '\\n'\n)}\\n`; // Join newlines and ensure a newline at the end.\n\nconst addImport = (stringContents: string, appName: string) => {\n const importRegex = /^(#import .*)\\n/gm;\n const addedImport = getImportSnippet(appName);\n\n const match = stringContents.match(importRegex);\n let endOfMatchIndex: number;\n if (!match || match.index === undefined) {\n // No imports found, just add to start of file:\n endOfMatchIndex = 0;\n } else {\n // Add after first import:\n endOfMatchIndex = match.index + match[0].length;\n }\n\n stringContents = injectCodeByLineNumber(\n stringContents,\n endOfMatchIndex,\n addedImport\n ).join('\\n');\n\n return stringContents;\n};\n\nconst addNotificationHandlerDeclaration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_APPDELEGATEDECLARATION_REGEX,\n CIO_PUSHNOTIFICATIONHANDLERDECLARATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addNotificationConfiguration = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFINISHLAUNCHINGMETHOD_REGEX,\n CIO_CONFIGURECIOSDKPUSHNOTIFICATION_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addDidFailToRegisterForRemoteNotificationsWithError = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_REGEX,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERROR_SNIPPET\n );\n\n return stringContents;\n};\n\nconst AddDidRegisterForRemoteNotificationsWithDeviceToken = (\n stringContents: string\n) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_REGEX,\n CIO_DIDREGISTERFORREMOTENOTIFICATIONSWITHDEVICETOKEN_SNIPPET\n );\n\n return stringContents;\n};\n\nconst addAdditionalMethodsForPushNotifications = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegex(\n stringContents,\n CIO_DIDFAILTOREGISTERFORREMOTENOTIFICATIONSWITHERRORFULL_REGEX,\n additionalMethodsForPushNotifications\n );\n\n return stringContents;\n};\n\nconst addAppdelegateHeaderModification = (stringContents: string) => {\n stringContents = injectCodeByMultiLineRegexAndReplaceLine(\n stringContents,\n CIO_APPDELEGATEHEADER_REGEX,\n CIO_APPDELEGATEHEADER_SNIPPET\n );\n\n return stringContents;\n};\n\nexport const withAppDelegateModifications: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withAppDelegate(configOuter, async (config) => {\n let stringContents = config.modResults.contents;\n const regex = new RegExp(\n `#import <${config.modRequest.projectName}-Swift.h>`\n );\n const match = stringContents.match(regex);\n\n if (!match) {\n const headerPath = getAppDelegateHeaderFilePath(\n config.modRequest.projectRoot\n );\n let headerContent = await FileManagement.read(headerPath);\n headerContent = addAppdelegateHeaderModification(headerContent);\n FileManagement.write(headerPath, headerContent);\n\n stringContents = addImport(\n stringContents,\n config.modRequest.projectName as string\n );\n stringContents = addNotificationHandlerDeclaration(stringContents);\n\n // any other value would be treated as true, it has to be explicitly false to disable\n if (\n props.disableNotificationRegistration !== undefined &&\n props.disableNotificationRegistration === false\n ) {\n stringContents = addNotificationConfiguration(stringContents);\n }\n stringContents = addAdditionalMethodsForPushNotifications(stringContents);\n stringContents =\n addDidFailToRegisterForRemoteNotificationsWithError(stringContents);\n stringContents =\n AddDidRegisterForRemoteNotificationsWithDeviceToken(stringContents);\n\n config.modResults.contents = stringContents;\n } else {\n console.log('Customerio AppDelegate changes already exist. Skipping...');\n }\n\n return config;\n });\n};\nfunction getImportSnippet(appName: string) {\n return `\n// Add swift bridge imports\n#import <ExpoModulesCore-Swift.h>\n#import <${appName}-Swift.h>\n `;\n}\n"],"mappings":"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"}
|
|
@@ -243,7 +243,7 @@ const updatePushFile = (options, envFileName) => {
|
|
|
243
243
|
const REGISTER_RE = /\{\{REGISTER_SNIPPET\}\}/;
|
|
244
244
|
let envFileContent = FileManagement.readFile(envFileName);
|
|
245
245
|
let snippet = '';
|
|
246
|
-
if (
|
|
246
|
+
if (options.disableNotificationRegistration !== undefined && options.disableNotificationRegistration === false) {
|
|
247
247
|
snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;
|
|
248
248
|
}
|
|
249
249
|
envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["withXcodeProject","xcode","CIO_NOTIFICATION_TARGET_NAME","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET","DEFAULT_BUNDLE_VERSION","LOCAL_PATH_TO_CIO_NSE_FILES","replaceCodeByRegex","injectCIONotificationPodfileCode","FileManagement","PLIST_FILENAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","iosPath","appName","projPath","xcodeProject","project","parse","err","_options$pushNotifica","Error","JSON","stringify","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","writeFile","writeSync","withCioNotificationsXcodeProject","configOuter","props","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","pbxTargetByName","console","warn","nsePath","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","envFileName","_options$pushNotifica2","_options$pushNotifica3","_options$pushNotifica6","_options$pushNotifica7","_options$pushNotifica10","_options$pushNotifica11","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica4","_options$pushNotifica5","apiKey","_options$pushNotifica8","_options$pushNotifica9","region","_options$pushNotifica12","_options$pushNotifica13","_options$pushNotifica14","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica15","_options$pushNotifica16","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import { ConfigPlugin, withXcodeProject } from '@expo/config-plugins';\nimport xcode from 'xcode';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS\n) => {\n // iosPath and appName are predefined from Expo config.\n // See function withCioNotificationsXcodeProject to get where the variabes are pulled from.\n const { iosPath, appName } = options;\n\n const projPath = `${iosPath}/${appName}.xcodeproj/project.pbxproj`;\n\n const xcodeProject = xcode.project(projPath);\n\n xcodeProject.parse(async function (err: Error) {\n if (err) {\n throw new Error(`Error parsing iOS project: ${JSON.stringify(err)}`);\n }\n\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n\n FileManagement.writeFile(projPath, xcodeProject.writeSync());\n });\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n await addNotificationServiceExtension(options);\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (!options.disableNotificationRegistration) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["withXcodeProject","xcode","CIO_NOTIFICATION_TARGET_NAME","CIO_REGISTER_PUSHNOTIFICATION_SNIPPET","DEFAULT_BUNDLE_VERSION","LOCAL_PATH_TO_CIO_NSE_FILES","replaceCodeByRegex","injectCIONotificationPodfileCode","FileManagement","PLIST_FILENAME","ENV_FILENAME","TARGETED_DEVICE_FAMILY","addNotificationServiceExtension","options","iosPath","appName","projPath","xcodeProject","project","parse","err","_options$pushNotifica","Error","JSON","stringify","pushNotification","addPushNotificationFile","useRichPush","addRichPushXcodeProj","writeFile","writeSync","withCioNotificationsXcodeProject","configOuter","props","config","modRequest","ios","version","bundleShortVersion","appleTeamId","iosDeploymentTarget","useFrameworks","undefined","projectName","platformProjectRoot","bundleIdentifier","buildNumber","bundleVersion","pbxTargetByName","console","warn","nsePath","mkdir","recursive","files","getTargetFile","filename","forEach","targetFile","copyFile","infoPlistTargetFile","updateNseInfoPlist","updateNseEnv","extGroup","addPbxGroup","groups","hash","objects","Object","keys","key","name","path","addToPbxGroup","uuid","projObjects","nseTarget","addTarget","addBuildPhase","configurations","pbxXCBuildConfigurationSection","buildSettings","PRODUCT_NAME","buildSettingsObj","DEVELOPMENT_TEAM","IPHONEOS_DEPLOYMENT_TARGET","CODE_SIGN_STYLE","SWIFT_VERSION","addTargetAttribute","payload","BUNDLE_SHORT_VERSION_RE","BUNDLE_VERSION_RE","plistFileString","readFile","envFileName","_options$pushNotifica2","_options$pushNotifica3","_options$pushNotifica6","_options$pushNotifica7","_options$pushNotifica10","_options$pushNotifica11","SITE_ID_RE","API_KEY_RE","REGION_RE","envFileContent","env","siteId","_options$pushNotifica4","_options$pushNotifica5","apiKey","_options$pushNotifica8","_options$pushNotifica9","region","_options$pushNotifica12","_options$pushNotifica13","_options$pushNotifica14","regionMap","us","eu","toLowerCase","mappedRegion","_options$pushNotifica15","_options$pushNotifica16","file","appPath","exists","log","updatePushFile","group","pbxCreateGroup","classesKey","findPBXGroupKey","addSourceFile","REGISTER_RE","snippet","disableNotificationRegistration"],"sources":["withNotificationsXcodeProject.ts"],"sourcesContent":["import { ConfigPlugin, withXcodeProject } from '@expo/config-plugins';\nimport xcode from 'xcode';\n\nimport {\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_REGISTER_PUSHNOTIFICATION_SNIPPET,\n DEFAULT_BUNDLE_VERSION,\n LOCAL_PATH_TO_CIO_NSE_FILES,\n} from '../helpers/constants/ios';\nimport { replaceCodeByRegex } from '../helpers/utils/codeInjection';\nimport { injectCIONotificationPodfileCode } from '../helpers/utils/injectCIOPodfileCode';\nimport type { CustomerIOPluginOptionsIOS } from '../types/cio-types';\nimport { FileManagement } from './../helpers/utils/fileManagement';\n\nconst PLIST_FILENAME = `${CIO_NOTIFICATION_TARGET_NAME}-Info.plist`;\nconst ENV_FILENAME = 'Env.swift';\n\nconst TARGETED_DEVICE_FAMILY = `\"1,2\"`;\n\nconst addNotificationServiceExtension = async (\n options: CustomerIOPluginOptionsIOS\n) => {\n // iosPath and appName are predefined from Expo config.\n // See function withCioNotificationsXcodeProject to get where the variabes are pulled from.\n const { iosPath, appName } = options;\n\n const projPath = `${iosPath}/${appName}.xcodeproj/project.pbxproj`;\n\n const xcodeProject = xcode.project(projPath);\n\n xcodeProject.parse(async function (err: Error) {\n if (err) {\n throw new Error(`Error parsing iOS project: ${JSON.stringify(err)}`);\n }\n\n if (options.pushNotification) {\n await addPushNotificationFile(options, xcodeProject);\n }\n\n if (options.pushNotification?.useRichPush) {\n await addRichPushXcodeProj(options, xcodeProject);\n }\n\n FileManagement.writeFile(projPath, xcodeProject.writeSync());\n });\n};\n\nexport const withCioNotificationsXcodeProject: ConfigPlugin<\n CustomerIOPluginOptionsIOS\n> = (configOuter, props) => {\n return withXcodeProject(configOuter, async (config) => {\n const { modRequest, ios, version: bundleShortVersion } = config;\n const {\n appleTeamId,\n iosDeploymentTarget,\n pushNotification,\n useFrameworks,\n } = props;\n\n if (ios === undefined)\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios config missing from app.config.js or app.json.'\n );\n\n // projectName and platformProjectRoot translates to appName and iosPath in addNotificationServiceExtension()\n const { projectName, platformProjectRoot } = modRequest;\n const { bundleIdentifier, buildNumber } = ios;\n\n if (bundleShortVersion === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: version missing from app.config.js or app.json'\n );\n }\n\n if (bundleIdentifier === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: ios.bundleIdentifier missing from app.config.js or app.json'\n );\n }\n\n if (projectName === undefined) {\n throw new Error(\n 'Adding NotificationServiceExtension failed: name missing from app.config.js or app.json'\n );\n }\n\n const options = {\n ...props,\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion: buildNumber || DEFAULT_BUNDLE_VERSION,\n iosPath: platformProjectRoot,\n appName: projectName,\n useFrameworks,\n iosDeploymentTarget,\n pushNotification,\n };\n\n await addNotificationServiceExtension(options);\n\n return config;\n });\n};\n\nconst addRichPushXcodeProj = async (\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) => {\n const {\n appleTeamId,\n bundleIdentifier,\n bundleShortVersion,\n bundleVersion,\n iosPath,\n iosDeploymentTarget,\n useFrameworks,\n } = options;\n\n await injectCIONotificationPodfileCode(iosPath, useFrameworks);\n\n // Check if `CIO_NOTIFICATION_TARGET_NAME` group already exist in the project\n // If true then skip creating a new group to avoid duplicate folders\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n const nsePath = `${iosPath}/${CIO_NOTIFICATION_TARGET_NAME}`;\n FileManagement.mkdir(nsePath, {\n recursive: true,\n });\n\n const files = [\n PLIST_FILENAME,\n 'NotificationService.h',\n 'NotificationService.swift',\n 'NotificationService.m',\n ENV_FILENAME,\n ];\n\n const getTargetFile = (filename: string) => `${nsePath}/${filename}`;\n\n files.forEach((filename) => {\n const targetFile = getTargetFile(filename);\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${filename}`,\n targetFile\n );\n });\n\n /* MODIFY COPIED EXTENSION FILES */\n const infoPlistTargetFile = getTargetFile(PLIST_FILENAME);\n updateNseInfoPlist({\n bundleVersion,\n bundleShortVersion,\n infoPlistTargetFile,\n });\n updateNseEnv(options, getTargetFile(ENV_FILENAME));\n\n // Create new PBXGroup for the extension\n const extGroup = xcodeProject.addPbxGroup(\n files,\n CIO_NOTIFICATION_TARGET_NAME,\n CIO_NOTIFICATION_TARGET_NAME\n );\n\n // Add the new PBXGroup to the top level group. This makes the\n // files / folder appear in the file explorer in Xcode.\n const groups = xcodeProject.hash.project.objects['PBXGroup'];\n Object.keys(groups).forEach((key) => {\n if (groups[key].name === undefined && groups[key].path === undefined) {\n xcodeProject.addToPbxGroup(extGroup.uuid, key);\n }\n });\n\n // WORK AROUND for codeProject.addTarget BUG\n // Xcode projects don't contain these if there is only one target\n // An upstream fix should be made to the code referenced in this link:\n // - https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860\n const projObjects = xcodeProject.hash.project.objects;\n projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};\n projObjects['PBXContainerItemProxy'] =\n projObjects['PBXTargetDependency'] || {};\n\n if (xcodeProject.pbxTargetByName(CIO_NOTIFICATION_TARGET_NAME)) {\n console.warn(\n `${CIO_NOTIFICATION_TARGET_NAME} already exists in project. Skipping...`\n );\n return;\n }\n\n // Add the NSE target\n // This also adds PBXTargetDependency and PBXContainerItemProxy\n const nseTarget = xcodeProject.addTarget(\n CIO_NOTIFICATION_TARGET_NAME,\n 'app_extension',\n CIO_NOTIFICATION_TARGET_NAME,\n `${bundleIdentifier}.richpush`\n );\n\n // Add build phases to the new target\n xcodeProject.addBuildPhase(\n ['NotificationService.m', 'NotificationService.swift', 'Env.swift'],\n 'PBXSourcesBuildPhase',\n 'Sources',\n nseTarget.uuid\n );\n xcodeProject.addBuildPhase(\n [],\n 'PBXResourcesBuildPhase',\n 'Resources',\n nseTarget.uuid\n );\n\n xcodeProject.addBuildPhase(\n [],\n 'PBXFrameworksBuildPhase',\n 'Frameworks',\n nseTarget.uuid\n );\n\n // Edit the Deployment info of the target\n const configurations = xcodeProject.pbxXCBuildConfigurationSection();\n for (const key in configurations) {\n if (\n typeof configurations[key].buildSettings !== 'undefined' &&\n configurations[key].buildSettings.PRODUCT_NAME ===\n `\"${CIO_NOTIFICATION_TARGET_NAME}\"`\n ) {\n const buildSettingsObj = configurations[key].buildSettings;\n buildSettingsObj.DEVELOPMENT_TEAM = appleTeamId;\n buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =\n iosDeploymentTarget || '13.0';\n buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;\n buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';\n buildSettingsObj.SWIFT_VERSION = 4.2;\n }\n }\n\n // Add development team to the target & the main\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId, nseTarget);\n xcodeProject.addTargetAttribute('DevelopmentTeam', appleTeamId);\n};\n\nconst updateNseInfoPlist = (payload: {\n bundleVersion?: string;\n bundleShortVersion?: string;\n infoPlistTargetFile: string;\n}) => {\n const BUNDLE_SHORT_VERSION_RE = /\\{\\{BUNDLE_SHORT_VERSION\\}\\}/;\n const BUNDLE_VERSION_RE = /\\{\\{BUNDLE_VERSION\\}\\}/;\n\n let plistFileString = FileManagement.readFile(payload.infoPlistTargetFile);\n\n if (payload.bundleVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_VERSION_RE,\n payload.bundleVersion\n );\n }\n\n if (payload.bundleShortVersion) {\n plistFileString = replaceCodeByRegex(\n plistFileString,\n BUNDLE_SHORT_VERSION_RE,\n payload.bundleShortVersion\n );\n }\n\n FileManagement.writeFile(payload.infoPlistTargetFile, plistFileString);\n};\n\nconst updateNseEnv = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const SITE_ID_RE = /\\{\\{SITE_ID\\}\\}/;\n const API_KEY_RE = /\\{\\{API_KEY\\}\\}/;\n const REGION_RE = /\\{\\{REGION\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n if (options.pushNotification?.env?.siteId) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n SITE_ID_RE,\n options.pushNotification?.env?.siteId\n );\n }\n\n if (options.pushNotification?.env?.apiKey) {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n API_KEY_RE,\n options.pushNotification?.env?.apiKey\n );\n }\n\n if (options.pushNotification?.env?.region) {\n const regionMap = {\n us: 'Region.US',\n eu: 'Region.EU',\n };\n const region = options.pushNotification?.env?.region?.toLowerCase();\n const mappedRegion = (regionMap as any)[region] || '';\n if (!mappedRegion) {\n console.warn(\n `${options.pushNotification?.env?.region} is an invalid region. Please use the values from the docs: https://customer.io/docs/sdk/expo/getting-started/#configure-the-plugin`\n );\n } else {\n envFileContent = replaceCodeByRegex(\n envFileContent,\n REGION_RE,\n mappedRegion\n );\n }\n }\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n\nasync function addPushNotificationFile(\n options: CustomerIOPluginOptionsIOS,\n xcodeProject: any\n) {\n const { iosPath, appName } = options;\n const file = 'PushService.swift';\n const appPath = `${iosPath}/${appName}`;\n const getTargetFile = (filename: string) => `${appPath}/${filename}`;\n const targetFile = getTargetFile(file);\n\n // Check whether {file} exists in the project. If false, then add the file\n // If {file} exists then skip and return\n if (!FileManagement.exists(getTargetFile(file))) {\n FileManagement.mkdir(appPath, {\n recursive: true,\n });\n\n FileManagement.copyFile(\n `${LOCAL_PATH_TO_CIO_NSE_FILES}/${file}`,\n targetFile\n );\n } else {\n console.log(`${getTargetFile(file)} already exists. Skipping...`);\n return;\n }\n\n updatePushFile(options, targetFile);\n\n const group = xcodeProject.pbxCreateGroup('CustomerIONotifications');\n const classesKey = xcodeProject.findPBXGroupKey({ name: `${appName}` });\n xcodeProject.addToPbxGroup(group, classesKey);\n\n xcodeProject.addSourceFile(`${appName}/${file}`, null, group);\n}\n\nconst updatePushFile = (\n options: CustomerIOPluginOptionsIOS,\n envFileName: string\n) => {\n const REGISTER_RE = /\\{\\{REGISTER_SNIPPET\\}\\}/;\n\n let envFileContent = FileManagement.readFile(envFileName);\n\n let snippet = '';\n if (\n options.disableNotificationRegistration !== undefined &&\n options.disableNotificationRegistration === false\n ) {\n snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;\n }\n\n envFileContent = replaceCodeByRegex(envFileContent, REGISTER_RE, snippet);\n\n FileManagement.writeFile(envFileName, envFileContent);\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const LOCAL_PATH_TO_CIO_NSE_FILES = "./node_modules/customerio-expo-plugin/src/helpers/native-files/ios";
|
|
2
2
|
export declare const IOS_DEPLOYMENT_TARGET = "13.0";
|
|
3
|
-
export declare const CIO_SDK_VERSION = "~> 2.0
|
|
3
|
+
export declare const CIO_SDK_VERSION = "'~> 2.0'";
|
|
4
4
|
export declare const CIO_PODFILE_REGEX: RegExp;
|
|
5
5
|
export declare const CIO_CIO_TARGET_REGEX: RegExp;
|
|
6
6
|
export declare const CIO_PODFILE_NOTIFICATION_REGEX: RegExp;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "customerio-expo-plugin",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.7",
|
|
4
4
|
"description": "Expo config plugin for the Customer IO React Native SDK",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"registry": "https://registry.npmjs.org/"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"customerio-reactnative": "^2.0.0
|
|
43
|
+
"customerio-reactnative": "^2.0.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@expo/config-plugins": "^4.1.4",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const LOCAL_PATH_TO_CIO_NSE_FILES = `./node_modules/customerio-expo-plugin/src/helpers/native-files/ios`;
|
|
2
2
|
export const IOS_DEPLOYMENT_TARGET = '13.0';
|
|
3
|
-
export const CIO_SDK_VERSION = '~> 2.0
|
|
3
|
+
export const CIO_SDK_VERSION = "'~> 2.0'";
|
|
4
4
|
export const CIO_PODFILE_REGEX = /pod 'CustomerIO\/MessagingPushAPN'/;
|
|
5
5
|
export const CIO_CIO_TARGET_REGEX = /cio_target_names/;
|
|
6
6
|
export const CIO_PODFILE_NOTIFICATION_REGEX = /target 'NotificationService' do/;
|
|
@@ -64,7 +64,7 @@ export const CIO_WILLPRESENTNOTIFICATIONHANDLER_SNIPPET = `
|
|
|
64
64
|
- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
|
|
65
65
|
completionHandler( UNNotificationPresentationOptionAlert + UNNotificationPresentationOptionSound);
|
|
66
66
|
}`;
|
|
67
|
-
export const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN',
|
|
67
|
+
export const CIO_PODFILE_SNIPPET = ` pod 'CustomerIO/MessagingPushAPN', ${CIO_SDK_VERSION}`;
|
|
68
68
|
export const CIO_PODFILE_NOTIFICATION_SNIPPET = `
|
|
69
69
|
target '${CIO_NOTIFICATION_TARGET_NAME}' do
|
|
70
70
|
${CIO_PODFILE_SNIPPET}
|
|
@@ -143,7 +143,12 @@ export const withAppDelegateModifications: ConfigPlugin<
|
|
|
143
143
|
config.modRequest.projectName as string
|
|
144
144
|
);
|
|
145
145
|
stringContents = addNotificationHandlerDeclaration(stringContents);
|
|
146
|
-
|
|
146
|
+
|
|
147
|
+
// any other value would be treated as true, it has to be explicitly false to disable
|
|
148
|
+
if (
|
|
149
|
+
props.disableNotificationRegistration !== undefined &&
|
|
150
|
+
props.disableNotificationRegistration === false
|
|
151
|
+
) {
|
|
147
152
|
stringContents = addNotificationConfiguration(stringContents);
|
|
148
153
|
}
|
|
149
154
|
stringContents = addAdditionalMethodsForPushNotifications(stringContents);
|
|
@@ -367,7 +367,10 @@ const updatePushFile = (
|
|
|
367
367
|
let envFileContent = FileManagement.readFile(envFileName);
|
|
368
368
|
|
|
369
369
|
let snippet = '';
|
|
370
|
-
if (
|
|
370
|
+
if (
|
|
371
|
+
options.disableNotificationRegistration !== undefined &&
|
|
372
|
+
options.disableNotificationRegistration === false
|
|
373
|
+
) {
|
|
371
374
|
snippet = CIO_REGISTER_PUSHNOTIFICATION_SNIPPET;
|
|
372
375
|
}
|
|
373
376
|
|