Oracle Help Center | Oracle Responsys Mobile App Platform Cloud Service title

iOS FAQs

General Questions

Is Xcode 11 and/or iOS 13.x libraries supported?

Yes, however before you build your iOS app with Xcode 11 (or with iOS 13.x libraries), you are required to integrate your iOS mobile app with Responsys SDK version 6.42.1 or later.

Why is this upgrade required?
If you build your app with Xcode 11 or iOS 13.x libraries and do not integrate your iOS app with Responsys SDK version 6.42.1 or later, your iOS mobile app users will not receive Push Notifications from Responsys. Xcode 11 and iOS 13.x libraries break the method used by Push Notification SDKs like the Responsys Push SDK to obtain a Push Notification token for apps.

By when do I need to upgrade my mobile app?
We recommend that you immediately upgrade your iOS app to use Responsys SDK version 6.42.1 or later. In doing so, you can ensure that your app will have the prerequisites required to build your app with Xcode 11 or iOS 13.x libraries and will avoid issues when upgrading to the latest Xcode versions.

iOS SDK Link:

As always, we recommend that you use the latest version of our Push SDKs when managing your Mobile solution. For questions, contact Oracle Support.

I received an email about PEM file expiration. What should I do?

Responsys sends email reminders before a PEM file used by an iOS app is about to expire. This allows Mobile App Developers to update the PEM file in the system. The email is sent to Account Primary Contacts and to the Responsys user who added the mobile app using the Mobile App Developer Console. PEM file expiration reminders are sent 30 days in advance, and if the file is not updated, they will repeat at 14 days and 7 days before the expiration date. If you prefer an authentication method without an expiry date, see Generating an APNs Auth Key to learn about Authentication Keys.

When you receive one of these emails, follow the instructions for logging into Responsys given in the email. Next, follow the instructions in one of the following topics, depending on the type of PEM file you need to update:

IMPORTANT: If the PEM file expires, Responsys will be unable to send any Mobile App Channel campaigns to the mobile app users. This also impacts campaign launches scheduled or triggered through the Responsys Web Services API.

 

Troubleshooting

Enabling Push Notification Capability

Error:[PushIOManager] Push token error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo={NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}

Solution: Enable Push Notifications from Capabilities tab.

Adding linker flags

Error: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString isBlank]: unrecognized selector sent to instance 0x10010d780'

Solution: Add other linker flags: -ObjC -all_load (in build settings)

Application Deployment Target Setting

Warning: object file (/../PushIOManager.framework/PushIOManager) was built for newer iOS version (8.0) than being linked (7.0)

Solution: SDK supports only iOS 8.0 onwards. Please update the application deployment target (8.0 minimum) to avoid this warning.

Media Attachment

Error:Undefined symbols for architecture arm64: "OBJC_METACLASS$PIOMediaAttachmentServiceExtension", referenced from: _OBJC_METACLASS$NotificationService in NotificationService.o "_OBJC_CLASS$PIOMediaAttachmentServiceExtension", referenced from: _OBJC_CLASS$_NotificationService in NotificationService.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Solution:Build Error :Select the target from the 'Target Panel'.Select the extension target.Click the general tab. Under linked frameworks and binaries check if the ‘PIOMediaAttachmentExtensionFramework’ is added. If not, drag the framework under the ‘linked frameworks and binaries’ heading.

Media Attachment

Error:Application build is successful but crashes at launch. Debug log shows :

dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/.../HelloMediaNotifications.app/HelloMediaNotifications Reason: image not found (lldb)

Solution:This issue is encountered in devices running iOS versions below iOS 10.

Select the application target from the 'Target Panel'.Click the general tab. Remove the ‘PIOMediaAttachmentExtensionFramework’ from the ‘linked frameworks and binaries’ section to resolve the issue.

Media Attachment

Error:/Users/………/Applications/HelloMediaNotifications.app/Frameworks/PIOMediaAttachmentExtension.framework: bundle format unrecognized, invalid, or unsuitable

Solution:This issue is encountered in devices running iOS versions below iOS 10.

Select the application target from the 'Target Panel'. Remove the ‘PIOMediaAttachmentExtensionFramework’ from the ‘embedded binaries’ section to resolve the issue.

Registration Completion Handler

Issue:Completion handler for 'registerForAllRemoteNotificationTypes' is not being called.

Solution:Ensure that PushIOManager Callbacks are implemented as follows in the AppDelegate.m file:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:
    (NSData *)deviceToken
{
[[PushIOManager sharedInstance]  didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
[[PushIOManager sharedInstance]  didFailToRegisterForRemoteNotificationsWithError:error];
}
        
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    PushIOManager.sharedInstance().didRegisterForRemoteNotifications(withDeviceToken: deviceToken)
}
        
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    PushIOManager.sharedInstance().didFailToRegisterForRemoteNotificationsWithError(error)
}
        

Displaying Alerts While the App Is Running

Issue: When testing the mobile app on iOS, the push notification does not display while the app is running.

Solution: This is the expected default behavior. If you would like push notifications to display while the app is running, modify your mobile app as described in Displaying Alerts While App Is Running.